diff --git a/.babelrc.js b/.babelrc.js deleted file mode 100644 index 51399697f..000000000 --- a/.babelrc.js +++ /dev/null @@ -1,12 +0,0 @@ -module.exports = { - presets: [ - [ - '@babel/preset-env', - { - loose: true, - bugfixes: true, - modules: false - } - ] - ] -}; diff --git a/.browserslistrc b/.browserslistrc deleted file mode 100644 index b8e384bc9..000000000 --- a/.browserslistrc +++ /dev/null @@ -1,15 +0,0 @@ -# https://github.com/browserslist/browserslist#readme - ->= 0.5% -last 2 major versions -not dead -Chrome >= 60 -Firefox >= 60 -# needed since Legacy Edge still has usage; 79 was the first Chromium Edge version -# should be removed in the future when its usage drops or when it's moved to dead browsers -not Edge < 79 -Firefox ESR -iOS >= 10 -Safari >= 10 -Android >= 6 -not Explorer <= 11 diff --git a/.bundlewatch.config.json b/.bundlewatch.config.json deleted file mode 100644 index da47da480..000000000 --- a/.bundlewatch.config.json +++ /dev/null @@ -1,66 +0,0 @@ -{ - "files": [ - { - "path": "./dist/css/bootstrap-grid.css", - "maxSize": "7 kB" - }, - { - "path": "./dist/css/bootstrap-grid.min.css", - "maxSize": "6 kB" - }, - { - "path": "./dist/css/bootstrap-reboot.css", - "maxSize": "2.25 kB" - }, - { - "path": "./dist/css/bootstrap-reboot.min.css", - "maxSize": "2 kB" - }, - { - "path": "./dist/css/bootstrap-utilities.css", - "maxSize": "7.5 kB" - }, - { - "path": "./dist/css/bootstrap-utilities.min.css", - "maxSize": "6.75 kB" - }, - { - "path": "./dist/css/bootstrap.css", - "maxSize": "24 kB" - }, - { - "path": "./dist/css/bootstrap.min.css", - "maxSize": "22 kB" - }, - { - "path": "./dist/js/bootstrap.bundle.js", - "maxSize": "41 kB" - }, - { - "path": "./dist/js/bootstrap.bundle.min.js", - "maxSize": "21.5 kB" - }, - { - "path": "./dist/js/bootstrap.esm.js", - "maxSize": "27 kB" - }, - { - "path": "./dist/js/bootstrap.esm.min.js", - "maxSize": "18 kB" - }, - { - "path": "./dist/js/bootstrap.js", - "maxSize": "28 kB" - }, - { - "path": "./dist/js/bootstrap.min.js", - "maxSize": "15.5 kB" - } - ], - "ci": { - "trackBranches": [ - "main", - "v4-dev" - ] - } -} diff --git a/.editorconfig b/.editorconfig index f29d257cc..c193ae071 100644 --- a/.editorconfig +++ b/.editorconfig @@ -9,3 +9,9 @@ indent_size = 2 indent_style = space insert_final_newline = true trim_trailing_whitespace = true + +[*.md] +trim_trailing_whitespace = false + +[*.py] +indent_size = 4 diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index ae6baae7e..000000000 --- a/.eslintignore +++ /dev/null @@ -1,6 +0,0 @@ -**/*.min.js -**/dist/ -**/vendor/ -/_gh_pages/ -/js/coverage/ -/site/static/sw.js diff --git a/.eslintrc.json b/.eslintrc.json deleted file mode 100644 index d5a54d46b..000000000 --- a/.eslintrc.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "root": true, - "extends": [ - "plugin:import/errors", - "plugin:import/warnings", - "plugin:unicorn/recommended", - "xo/esnext", - "xo/browser" - ], - "rules": { - "capitalized-comments": "off", - "indent": [ - "error", - 2, - { - "MemberExpression": "off", - "SwitchCase": 1 - } - ], - "max-params": [ - "warn", - 5 - ], - "multiline-ternary": [ - "error", - "always-multiline" - ], - "new-cap": [ - "error", - { - "properties": false - } - ], - "no-console": "error", - "object-curly-spacing": [ - "error", - "always" - ], - "prefer-named-capture-group": "off", - "semi": [ - "error", - "never" - ], - "unicorn/consistent-function-scoping": "off", - "unicorn/explicit-length-check": "off", - "unicorn/no-array-callback-reference": "off", - "unicorn/no-for-loop": "off", - "unicorn/no-null": "off", - "unicorn/no-unused-properties": "error", - "unicorn/no-useless-undefined": "off", - "unicorn/prefer-dom-node-append": "off", - "unicorn/prefer-dom-node-dataset": "off", - "unicorn/prefer-dom-node-remove": "off", - "unicorn/prefer-optional-catch-binding": "off", - "unicorn/prefer-query-selector": "off", - "unicorn/prevent-abbreviations": "off" - } -} diff --git a/.gitattributes b/.gitattributes index 40b1c3742..5788b1228 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,8 +1,16 @@ # Enforce Unix newlines -* text=auto eol=lf - +*.css text eol=lf +*.html text eol=lf +*.js text eol=lf +*.json text eol=lf +*.md text eol=lf +*.py text eol=lf +*.rb text eol=lf +*.scss text eol=lf +*.svg text eol=lf +*.yml text eol=lf # Don't diff or textually merge source maps -*.map binary +*.map binary bootstrap.css linguist-vendored=false bootstrap.js linguist-vendored=false diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS deleted file mode 100644 index 7d3fa9904..000000000 --- a/.github/CODEOWNERS +++ /dev/null @@ -1,3 +0,0 @@ -*.js @twbs/js-review -*.css @twbs/css-review -*.scss @twbs/css-review diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml deleted file mode 100644 index 43ea984ba..000000000 --- a/.github/FUNDING.yml +++ /dev/null @@ -1,3 +0,0 @@ -# These are supported funding model platforms - -open_collective: bootstrap diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md deleted file mode 100644 index 70dcfd532..000000000 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -name: Bug report -about: Tell us about a bug you may have identified in Bootstrap. -title: '' -labels: '' -assignees: '' - ---- - -Before opening: - -- [Search for duplicate or closed issues](https://github.com/twbs/bootstrap/issues?utf8=%E2%9C%93&q=is%3Aissue) -- [Validate](https://html5.validator.nu/) any HTML to avoid common problems -- Read the [contributing guidelines](https://github.com/twbs/bootstrap/blob/main/.github/CONTRIBUTING.md) - -Bug reports must include: - -- Operating system and version (Windows, macOS, Android, iOS) -- Browser and version (Chrome, Firefox, Safari, Microsoft Edge, Opera, Android Browser) -- A [reduced test case](https://css-tricks.com/reduced-test-cases/) or suggested fix using [CodePen](https://codepen.io/) or [JS Bin](https://jsbin.com/) diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml deleted file mode 100644 index 2913b45f0..000000000 --- a/.github/ISSUE_TEMPLATE/config.yml +++ /dev/null @@ -1,4 +0,0 @@ -contact_links: - - name: Ask a question - url: https://github.com/twbs/bootstrap/discussions/new - about: Ask and discuss questions with other Bootstrap community members diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md deleted file mode 100644 index 422fa2bb4..000000000 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -name: Feature request -about: Suggest an idea for a new feature in Bootstrap. -title: '' -labels: feature -assignees: '' - ---- - -Before opening: - -- [Search for duplicate or closed issues](https://github.com/twbs/bootstrap/issues?utf8=%E2%9C%93&q=is%3Aissue) -- Read the [contributing guidelines](https://github.com/twbs/bootstrap/blob/main/.github/CONTRIBUTING.md) - -Feature requests must include: - -- As much detail as possible for what we should add and why it's important to Bootstrap -- Relevant links to prior art, screenshots, or live demos whenever possible diff --git a/.github/SUPPORT.md b/.github/SUPPORT.md deleted file mode 100644 index c30bed3b4..000000000 --- a/.github/SUPPORT.md +++ /dev/null @@ -1,11 +0,0 @@ -### Bug reports - -See the [contributing guidelines](CONTRIBUTING.md) for sharing bug reports. - -### How-to - -For general troubleshooting or help getting started: - -- Join [the official Slack room](https://bootstrap-slack.herokuapp.com/). -- Chat with fellow Bootstrappers in IRC. On the `irc.freenode.net` server, in the `##bootstrap` channel. -- Ask and explore Stack Overflow with the [`bootstrap-5`](https://stackoverflow.com/questions/tagged/bootstrap-5) tag. diff --git a/.github/dependabot.yml b/.github/dependabot.yml deleted file mode 100644 index 29135b400..000000000 --- a/.github/dependabot.yml +++ /dev/null @@ -1,24 +0,0 @@ -version: 2 -updates: - - package-ecosystem: npm - directory: "/" - schedule: - interval: weekly - day: tuesday - time: "12:00" - timezone: Europe/Athens - open-pull-requests-limit: 10 - reviewers: - - XhmikosR - labels: - - dependencies - - v5 - versioning-strategy: increase - rebase-strategy: disabled - - package-ecosystem: "github-actions" - directory: "/" - schedule: - interval: weekly - day: tuesday - time: "12:00" - timezone: Europe/Athens diff --git a/.github/release-drafter.yml b/.github/release-drafter.yml deleted file mode 100644 index e2b70e03e..000000000 --- a/.github/release-drafter.yml +++ /dev/null @@ -1,54 +0,0 @@ -name-template: 'v$NEXT_MAJOR_VERSION' -tag-template: 'v$NEXT_MAJOR_VERSION' -prerelease: true -exclude-labels: - - 'skip-changelog' -categories: - - title: '❗ Breaking Changes' - labels: - - 'breaking-change' - - title: '🚀 Features' - labels: - - 'new-feature' - - 'feature' - - 'enhancement' - - title: '🐛 Bug fixes' - labels: - - 'fix' - - 'bugfix' - - 'bug' - - title: '⚡ Performance Improvements' - labels: - - 'performance' - - title: '🎨 CSS' - labels: - - 'css' - - title: '☕️ JavaScript' - labels: - - 'js' - - title: '📖 Docs' - labels: - - 'docs' - - title: '🌎 Accessibility' - labels: - - 'accessibility' - - title: '🔧 Utility API' - labels: - - 'utility API' - - 'utilities' - - title: '🏭 Tests' - labels: - - 'tests' - - title: '🧰 Misc' - labels: - - 'build' - - 'meta' - - 'chore' - - 'CI' - - title: '📦 Dependencies' - labels: - - 'dependencies' -change-template: '- #$NUMBER: $TITLE' -template: | - ## Changes - $CHANGES diff --git a/.github/workflows/browserstack.yml b/.github/workflows/browserstack.yml deleted file mode 100644 index a12bffcf7..000000000 --- a/.github/workflows/browserstack.yml +++ /dev/null @@ -1,44 +0,0 @@ -name: BrowserStack - -on: - push: - -env: - FORCE_COLOR: 2 - NODE: 14 - -jobs: - browserstack: - runs-on: ubuntu-latest - if: github.repository == 'twbs/bootstrap' && (!contains(github.event.commits[0].message, '[ci skip]') && !contains(github.event.commits[0].message, '[skip ci]')) - timeout-minutes: 30 - - steps: - - name: Clone repository - uses: actions/checkout@v2 - - - name: Set up Node.js - uses: actions/setup-node@v2 - with: - node-version: "${{ env.NODE }}" - - - name: Set up npm cache - uses: actions/cache@v2 - with: - path: ~/.npm - key: ${{ runner.os }}-node-v${{ env.NODE }}-${{ hashFiles('package.json') }}-${{ hashFiles('package-lock.json') }} - restore-keys: | - ${{ runner.os }}-node-v${{ env.NODE }}-${{ hashFiles('package.json') }}-${{ hashFiles('package-lock.json') }} - ${{ runner.os }}-node-v${{ env.NODE }}- - - - name: Install npm dependencies - run: npm ci - - - name: Run dist - run: npm run dist - - - name: Run BrowserStack tests - run: npm run js-test-cloud - env: - BROWSER_STACK_ACCESS_KEY: "${{ secrets.BROWSER_STACK_ACCESS_KEY }}" - BROWSER_STACK_USERNAME: "${{ secrets.BROWSER_STACK_USERNAME }}" diff --git a/.github/workflows/bundlewatch.yml b/.github/workflows/bundlewatch.yml deleted file mode 100644 index b2bd5eed5..000000000 --- a/.github/workflows/bundlewatch.yml +++ /dev/null @@ -1,45 +0,0 @@ -name: Bundlewatch - -on: - push: - branches-ignore: - - "dependabot/**" - pull_request: - -env: - FORCE_COLOR: 2 - NODE: 14 - -jobs: - bundlewatch: - runs-on: ubuntu-latest - - steps: - - name: Clone repository - uses: actions/checkout@v2 - - - name: Set up Node.js - uses: actions/setup-node@v2 - with: - node-version: "${{ env.NODE }}" - - - name: Set up npm cache - uses: actions/cache@v2 - with: - path: ~/.npm - key: ${{ runner.os }}-node-v${{ env.NODE }}-${{ hashFiles('package.json') }}-${{ hashFiles('package-lock.json') }} - restore-keys: | - ${{ runner.os }}-node-v${{ env.NODE }}-${{ hashFiles('package.json') }}-${{ hashFiles('package-lock.json') }} - ${{ runner.os }}-node-v${{ env.NODE }}- - - - name: Install npm dependencies - run: npm ci - - - name: Run dist - run: npm run dist - - - name: Run bundlewatch - run: npm run bundlewatch - env: - BUNDLEWATCH_GITHUB_TOKEN: "${{ secrets.BUNDLEWATCH_GITHUB_TOKEN }}" - CI_BRANCH_BASE: main diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml deleted file mode 100644 index 469a5a4fc..000000000 --- a/.github/workflows/codeql.yml +++ /dev/null @@ -1,36 +0,0 @@ -name: "CodeQL" - -on: - push: - branches: - - main - - v4-dev - - "!dependabot/**" - pull_request: - # The branches below must be a subset of the branches above - branches: - - main - - v4-dev - schedule: - - cron: "0 2 * * 5" - -jobs: - analyze: - name: Analyze - runs-on: ubuntu-latest - - steps: - - name: Checkout repository - uses: actions/checkout@v2 - - # Initializes the CodeQL tools for scanning. - - name: Initialize CodeQL - uses: github/codeql-action/init@v1 - with: - languages: "javascript" - - - name: Autobuild - uses: github/codeql-action/autobuild@v1 - - - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v1 diff --git a/.github/workflows/css.yml b/.github/workflows/css.yml deleted file mode 100644 index a28059d79..000000000 --- a/.github/workflows/css.yml +++ /dev/null @@ -1,39 +0,0 @@ -name: CSS - -on: - push: - branches-ignore: - - "dependabot/**" - pull_request: - -env: - FORCE_COLOR: 2 - NODE: 14 - -jobs: - css: - runs-on: ubuntu-latest - - steps: - - name: Clone repository - uses: actions/checkout@v2 - - - name: Set up Node.js - uses: actions/setup-node@v2 - with: - node-version: "${{ env.NODE }}" - - - name: Set up npm cache - uses: actions/cache@v2 - with: - path: ~/.npm - key: ${{ runner.os }}-node-v${{ env.NODE }}-${{ hashFiles('package.json') }}-${{ hashFiles('package-lock.json') }} - restore-keys: | - ${{ runner.os }}-node-v${{ env.NODE }}-${{ hashFiles('package.json') }}-${{ hashFiles('package-lock.json') }} - ${{ runner.os }}-node-v${{ env.NODE }}- - - - name: Install npm dependencies - run: npm ci - - - name: Build CSS - run: npm run css diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml deleted file mode 100644 index 150e4d16c..000000000 --- a/.github/workflows/docs.yml +++ /dev/null @@ -1,41 +0,0 @@ -name: Docs - -on: - push: - branches-ignore: - - "dependabot/**" - pull_request: - -env: - FORCE_COLOR: 2 - NODE: 14 - -jobs: - docs: - runs-on: ubuntu-latest - - steps: - - name: Clone repository - uses: actions/checkout@v2 - - - name: Set up Node.js - uses: actions/setup-node@v2 - with: - node-version: "${{ env.NODE }}" - - - run: java -version - - - name: Set up npm cache - uses: actions/cache@v2 - with: - path: ~/.npm - key: ${{ runner.os }}-node-v${{ env.NODE }}-${{ hashFiles('package.json') }}-${{ hashFiles('package-lock.json') }} - restore-keys: | - ${{ runner.os }}-node-v${{ env.NODE }}-${{ hashFiles('package.json') }}-${{ hashFiles('package-lock.json') }} - ${{ runner.os }}-node-v${{ env.NODE }}- - - - name: Install npm dependencies - run: npm ci - - - name: Test docs - run: npm run docs diff --git a/.github/workflows/js.yml b/.github/workflows/js.yml deleted file mode 100644 index c56a2dfdd..000000000 --- a/.github/workflows/js.yml +++ /dev/null @@ -1,54 +0,0 @@ -name: JS Tests - -on: - push: - branches-ignore: - - "dependabot/**" - pull_request: - -env: - FORCE_COLOR: 2 - -jobs: - run: - name: Node ${{ matrix.node }} - runs-on: ubuntu-latest - - strategy: - fail-fast: false - matrix: - node: [10, 12, 14] - - steps: - - name: Clone repository - uses: actions/checkout@v2 - - - name: Set up Node.js - uses: actions/setup-node@v2 - with: - node-version: ${{ matrix.node }} - - - name: Set up npm cache - uses: actions/cache@v2 - with: - path: ~/.npm - key: ${{ runner.os }}-node-v${{ matrix.node }}-${{ hashFiles('package.json') }}-${{ hashFiles('package-lock.json') }}} - restore-keys: | - ${{ runner.os }}-node-v${{ matrix.node }}-${{ hashFiles('package.json') }}-${{ hashFiles('package-lock.json') }} - ${{ runner.os }}-node-v${{ matrix.node }}- - - - name: Install npm dependencies - run: npm ci - - - name: Run dist - run: npm run js - - - name: Run JS tests - run: npm run js-test - - - name: Run Coveralls - uses: coverallsapp/github-action@master - if: matrix.node == 14 - with: - github-token: "${{ secrets.GITHUB_TOKEN }}" - path-to-lcov: "./js/coverage/lcov.info" diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml deleted file mode 100644 index 369aaced3..000000000 --- a/.github/workflows/lint.yml +++ /dev/null @@ -1,39 +0,0 @@ -name: Lint - -on: - push: - branches-ignore: - - "dependabot/**" - pull_request: - -env: - FORCE_COLOR: 2 - NODE: 14 - -jobs: - lint: - runs-on: ubuntu-latest - - steps: - - name: Clone repository - uses: actions/checkout@v2 - - - name: Set up Node.js - uses: actions/setup-node@v2 - with: - node-version: "${{ env.NODE }}" - - - name: Set up npm cache - uses: actions/cache@v2 - with: - path: ~/.npm - key: ${{ runner.os }}-node-v${{ env.NODE }}-${{ hashFiles('package.json') }}-${{ hashFiles('package-lock.json') }} - restore-keys: | - ${{ runner.os }}-node-v${{ env.NODE }}-${{ hashFiles('package.json') }}-${{ hashFiles('package-lock.json') }} - ${{ runner.os }}-node-v${{ env.NODE }}- - - - name: Install npm dependencies - run: npm ci - - - name: Lint - run: npm run lint diff --git a/.github/workflows/node-sass.yml b/.github/workflows/node-sass.yml deleted file mode 100644 index ee64b2152..000000000 --- a/.github/workflows/node-sass.yml +++ /dev/null @@ -1,30 +0,0 @@ -name: CSS (node-sass) - -on: - push: - branches-ignore: - - "dependabot/**" - pull_request: - -env: - FORCE_COLOR: 2 - NODE: 14 - -jobs: - css: - runs-on: ubuntu-latest - - steps: - - name: Clone repository - uses: actions/checkout@v2 - - - name: Set up Node.js - uses: actions/setup-node@v2 - with: - node-version: "${{ env.NODE }}" - - - name: Build CSS with node-sass - run: | - npx --package node-sass@latest node-sass --version - npx --package node-sass@latest node-sass --output-style expanded --source-map true --source-map-contents true --precision 6 scss/ -o dist-sass/css/ - ls -Al dist-sass/css diff --git a/.github/workflows/release-notes.yml b/.github/workflows/release-notes.yml deleted file mode 100644 index 1c4f4be9b..000000000 --- a/.github/workflows/release-notes.yml +++ /dev/null @@ -1,14 +0,0 @@ -name: Release notes - -on: - push: - branches: - - main - -jobs: - update_release_draft: - runs-on: ubuntu-latest - steps: - - uses: release-drafter/release-drafter@v5 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.gitignore b/.gitignore index 0a0f88d15..49a88e64c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,12 @@ # Ignore docs files -/_gh_pages/ -# Hugo resources folder -/resources/ +_gh_pages +_site + +# Ignore ruby files +.ruby-version +.bundle +vendor/cache +vendor/bundle # Numerous always-ignore extensions *.diff @@ -28,14 +33,24 @@ *.sublime-workspace nbproject Thumbs.db -/.vscode/ -# Local Netlify folder -.netlify # Komodo .komodotools *.komodoproject +# grunt-html-validation +validation-report.json +validation-status.json + +# SCSS-Lint +scss-lint-report.xml + +# grunt-contrib-sass cache +.sass-cache + +# Jekyll metadata +docs/.jekyll-metadata + # Folders to ignore -/js/coverage/ -/node_modules/ +bower_components +node_modules diff --git a/.hound.yml b/.hound.yml new file mode 100644 index 000000000..1dd8ae609 --- /dev/null +++ b/.hound.yml @@ -0,0 +1,6 @@ +javascript: + enabled: false +scss: + config_file: scss/.scss-lint.yml + enabled: true + ignore_file: scss/_normalize.scss diff --git a/.stylelintignore b/.stylelintignore deleted file mode 100644 index e42e88938..000000000 --- a/.stylelintignore +++ /dev/null @@ -1,5 +0,0 @@ -**/*.min.css -**/dist/ -**/vendor/ -/_gh_pages/ -/js/coverage/ diff --git a/.stylelintrc b/.stylelintrc deleted file mode 100644 index c068d30b5..000000000 --- a/.stylelintrc +++ /dev/null @@ -1,31 +0,0 @@ -{ - "extends": [ - "stylelint-config-twbs-bootstrap/scss" - ], - "rules": { - "declaration-property-value-disallowed-list": { - "border": "none", - "outline": "none" - }, - "function-disallowed-list": [ - "calc", - "lighten", - "darken" - ], - "property-disallowed-list": [ - "border-radius", - "border-top-left-radius", - "border-top-right-radius", - "border-bottom-right-radius", - "border-bottom-left-radius", - "transition" - ], - "scss/dollar-variable-default": [ - true, - { - "ignore": "local" - } - ], - "scss/selector-no-union-class-name": true - } -} diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 000000000..5ae1137ad --- /dev/null +++ b/.travis.yml @@ -0,0 +1,47 @@ +sudo: false +language: node_js +git: + depth: 10 +node_js: + - "4" + - "5" +before_install: + - rvm install 2.2 + - rvm use 2.2 --fuzzy + - export GEMDIR=$(rvm gemdir) + - npm install -g npm@3 + - "export TRAVIS_COMMIT_MSG=\"$(git log --format=%B --no-merges -n 1)\"" + - echo "$TRAVIS_COMMIT_MSG" | grep '\[skip validator\]'; export TWBS_DO_VALIDATOR=$?; true + - echo "$TRAVIS_COMMIT_MSG" | grep '\[skip sauce\]'; export TWBS_DO_SAUCE=$?; true + - if [ "$TRAVIS_REPO_SLUG" = twbs-savage/bootstrap ]; then export TWBS_DO_VALIDATOR=0; fi +install: + - bundle install --deployment --jobs=3 + - cp grunt/npm-shrinkwrap.json ./ + - npm install -g grunt-cli + - npm install +# Caching disabled due to https://github.com/travis-ci/travis-ci/issues/5092 +#cache: +# directories: +# - node_modules +# - vendor/bundle +env: + global: + - SAUCE_USERNAME="bootstrap" + - secure: "pJkBwnuae9dKU5tEcCqccfS1QQw7/meEcfz63fM7ba7QJNjoA6BaXj08L5Z3Vb5vBmVPwBawxo5Hp0jC0r/Z/O0hGnAmz/Cz09L+cy7dSAZ9x4hvZePSja/UAusaB5ogMoO8l2b773MzgQeSmrLbExr9BWLeqEfjC2hFgdgHLaQ=" + - secure: "RKWpS+P20b4tG9tawzCMJSmQftoonmC7tJzyGYiHuEM1TcpHALLBcnzKlr/+DiPTfzDJWY4kS8pxfhK4uXOe8OHnhpMNub7LEWtFPePlZIervOJcsOydaQocTKqVVWD6OUubMeQmQ+tZmvmpjoJ1uPPEbFs9ciF7+dv3U5tLUZ0=" + - secure: "XswSKBY0HJ/aO9VOBeWlvGpqSFF/DsJmNKz7o5RkJMJX340qe44J929uUNwwOwlv9YrgptzC2W6l8bpmZQV+p6IYs99SoSA8CCaUfIJaqeU9x/UiT5vIHgqaNax+vFJwvzHLpF5v/ggFqFEKCd54gCDasePLTztHeC4oL104iaQ=" + matrix: + - TWBS_TEST=core + - TWBS_TEST=validate-html + - TWBS_TEST=sauce-js-unit +matrix: + fast_finish: true + exclude: + - node_js: "4" + env: TWBS_TEST=validate-html + - node_js: "4" + env: TWBS_TEST=sauce-js-unit +notifications: + slack: heybb:iz4wwosL0N0EdaX1gvgkU0NH + webhooks: + - http://savage.twbsapps.com/savage/travis diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 000000000..b25f83841 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,5 @@ +Bootstrap uses [GitHub's Releases feature](https://github.com/blog/1547-release-your-software) for its changelogs. + +See [the Releases section of our GitHub project](https://github.com/twbs/bootstrap/releases) for changelogs for each release version of Bootstrap. + +Release announcement posts on [the official Bootstrap blog](http://blog.getbootstrap.com) contain summaries of the most noteworthy changes made in each release. diff --git a/CNAME b/CNAME new file mode 100644 index 000000000..039362df6 --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +v4-alpha.getbootstrap.com diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md deleted file mode 100644 index 5c6a4e727..000000000 --- a/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,43 +0,0 @@ -# Contributor Covenant Code of Conduct - -## Our Pledge - -In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. - -## Our Standards - -Examples of behavior that contributes to creating a positive environment include: - -- Using welcoming and inclusive language -- Being respectful of differing viewpoints and experiences -- Gracefully accepting constructive criticism -- Focusing on what is best for the community -- Showing empathy towards other community members - -Examples of unacceptable behavior by participants include: - -- The use of sexualized language or imagery and unwelcome sexual attention or advances -- Trolling, insulting/derogatory comments, and personal or political attacks -- Public or private harassment -- Publishing others' private information, such as a physical or electronic address, without explicit permission -- Other conduct which could reasonably be considered inappropriate in a professional setting - -## Our Responsibilities - -Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. - -Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. - -## Scope - -This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at mdo@getbootstrap.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. - -Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant](https://www.contributor-covenant.org/), version 1.4, available at diff --git a/.github/CONTRIBUTING.md b/CONTRIBUTING.md similarity index 56% rename from .github/CONTRIBUTING.md rename to CONTRIBUTING.md index 32b30cdb3..122b1542a 100644 --- a/.github/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -19,18 +19,15 @@ and [submitting pull requests](#pull-requests), but please respect the following restrictions: * Please **do not** use the issue tracker for personal support requests. Stack - Overflow ([`bootstrap-5`](https://stackoverflow.com/questions/tagged/bootstrap-5) tag), - [Slack](https://bootstrap-slack.herokuapp.com/) or [IRC](README.md#community) are better places to get help. + Overflow ([`bootstrap-4`](https://stackoverflow.com/questions/tagged/bootstrap-4) tag), [Slack](https://bootstrap-slack.herokuapp.com/) or [IRC](README.md#community) are better places to get help. * Please **do not** derail or troll issues. Keep the discussion on topic and respect the opinions of others. -* Please **do not** post comments consisting solely of "+1" or ":thumbsup:". - Use [GitHub's "reactions" feature](https://blog.github.com/2016-03-10-add-reactions-to-pull-requests-issues-and-comments/) - instead. We reserve the right to delete comments which violate this rule. - -* Please **do not** open issues regarding the official themes offered on . - Instead, please email any questions or feedback regarding those themes to `themes AT getbootstrap DOT com`. +* Please **do not** open issues or pull requests regarding the code in + [`Normalize`](https://github.com/necolas/normalize.css) (open them in + its repository). +* Please **do not** open issues regarding the official themes offered on . Instead, please email any questions or feedback regarding those themes to `themes AT getbootstrap DOT com`. ## Issues and labels @@ -43,7 +40,7 @@ Our bug tracker utilizes several labels to help organize and identify issues. He - `docs` - Issues for improving or updating our documentation. - `examples` - Issues involving the example templates included in our docs. - `feature` - Issues asking for a new feature to be added, or an existing one to be extended or modified. New features require a minor version bump (e.g., `v3.0.0` to `v3.1.0`). -- `build` - Issues with our build system, which is used to run all our tests, concatenate and compile source files, and more. +- `grunt` - Issues with our included JavaScript-based Gruntfile, which is used to run all our tests, concatenate and compile source files, and more. - `help wanted` - Issues we need or would love help from the community to resolve. - `js` - Issues stemming from our compiled or source JavaScript files. - `meta` - Issues with the project itself or our GitHub repository. @@ -58,18 +55,19 @@ Good bug reports are extremely helpful, so thanks! Guidelines for bug reports: -0. **[Validate your HTML](https://html5.validator.nu/)** to ensure your +0. **Validate and lint your code** — [validate your HTML](http://html5.validator.nu) + and [lint your HTML](https://github.com/twbs/bootlint) to ensure your problem isn't caused by a simple error in your own code. 1. **Use the GitHub issue search** — check if the issue has already been reported. 2. **Check if the issue has been fixed** — try to reproduce it using the - latest `main` (or `v4-dev` branch if the issue is about v4) in the repository. + latest `master` or development branch in the repository. 3. **Isolate the problem** — ideally create a [reduced test case](https://css-tricks.com/reduced-test-cases/) and a live example. - [This JS Bin](https://jsbin.com/lolome/edit?html,output) is a helpful template. + [This JS Bin](http://jsbin.com/qusafa/edit?html,output) is a helpful template. A good bug report shouldn't leave others needing to chase you up for more @@ -100,13 +98,18 @@ Example: ### Reporting upstream browser bugs Sometimes bugs reported to us are actually caused by bugs in the browser(s) themselves, not bugs in Bootstrap per se. +When feasible, we aim to report such upstream bugs to the relevant browser vendor(s), and then list them on our [Wall of Browser Bugs](http://getbootstrap.com/browser-bugs/) and [document them in MDN](https://developer.mozilla.org/en-US/docs/Web). -| Vendor(s) | Browser(s) | Rendering engine | Bug reporting website(s) | Notes | -| ------------- | ---------------------------- | ---------------- | ------------------------------------------------------ | -------------------------------------------------------- | -| Mozilla | Firefox | Gecko | https://bugzilla.mozilla.org/enter_bug.cgi | "Core" is normally the right product option to choose. | -| Apple | Safari | WebKit | https://bugs.webkit.org/enter_bug.cgi?product=WebKit | In Apple's bug reporter, choose "Safari" as the product. | -| Google, Opera | Chrome, Chromium, Opera v15+ | Blink | https://bugs.chromium.org/p/chromium/issues/list | Click the "New issue" button. | -| Microsoft | Edge | Blink | https://developer.microsoft.com/en-us/microsoft-edge/ | Go to "Help > Send Feedback" from the browser | +| Vendor(s) | Browser(s) | Rendering engine | Bug reporting website(s) | Notes | +| ------------- | ---------------------------- | ---------------- | ------------------------------------------------------------------------------------- | -------------------------------------------------------- | +| Mozilla | Firefox | Gecko | https://bugzilla.mozilla.org/enter_bug.cgi | "Core" is normally the right product option to choose. | +| Apple | Safari | WebKit | https://bugs.webkit.org/enter_bug.cgi?product=WebKit https://bugreport.apple.com | In Apple's bug reporter, choose "Safari" as the product. | +| Google, Opera | Chrome, Chromium, Opera v15+ | Blink | https://code.google.com/p/chromium/issues/list | Click the "New issue" button. | +| Microsoft | Internet Explorer / Edge | Trident/EdgeHTML | https://connect.microsoft.com/IE/feedback/LoadSubmitFeedbackForm | | + +### Issues bots + +[@twbs-lmvtfy](https://github.com/twbs-lmvtfy) is a Bootstrap bot that hangs out in our GitHub issue tracker and automatically checks for HTML validation errors in live examples (e.g. jsFiddles, JS Bins, Bootplys, Plunks, CodePens, etc.) posted in issue comments. If it finds any errors, it will post a follow-up comment on the issue and point out the errors. If this happens with an example you've posted, please fix the errors and post an updated live example. If you opened a bug report, please check whether the bug still occurs with your revised, valid live example. If the bug no longer occurs, it was probably due to your invalid HTML rather than something in Bootstrap and we'd appreciate it if you could close out the GitHub issue. ## Feature requests @@ -123,32 +126,30 @@ Good pull requests—patches, improvements, new features—are a fantastic help. They should remain focused in scope and avoid containing unrelated commits. -**Please ask first** before embarking on any **significant** pull request (e.g. +**Please ask first** before embarking on any significant pull request (e.g. implementing features, refactoring code, porting to a different language), otherwise you risk spending a lot of time working on something that the -project's developers might not want to merge into the project. For trivial -things, or things that don't require a lot of your time, you can go ahead and -make a PR. +project's developers might not want to merge into the project. Please adhere to the [coding guidelines](#code-guidelines) used throughout the project (indentation, accurate comments, etc.) and any other requirements (such as test coverage). -**Do not edit `bootstrap.css` or `bootstrap.js`, and do not commit -any dist files (`dist/` or `js/dist`).** Those files are automatically generated by our build tools. You should -edit the source files in [`/bootstrap/scss/`](https://github.com/twbs/bootstrap/tree/main/scss) -and/or [`/bootstrap/js/src/`](https://github.com/twbs/bootstrap/tree/main/js/src) instead. +**Do not edit `bootstrap.css`, or `bootstrap.js` +directly!** Those files are automatically generated. You should edit the +source files in [`/bootstrap/scss/`](https://github.com/twbs/bootstrap/tree/master/scss) +and/or [`/bootstrap/js/`](https://github.com/twbs/bootstrap/tree/master/js) instead. Similarly, when contributing to Bootstrap's documentation, you should edit the documentation source files in -[the `/bootstrap/site/content/docs/` directory of the `main` branch](https://github.com/twbs/bootstrap/tree/main/site/content/docs). +[the `/bootstrap/docs/` directory of the `master` branch](https://github.com/twbs/bootstrap/tree/master/docs). **Do not edit the `gh-pages` branch.** That branch is generated from the documentation source files and is managed separately by the Bootstrap Core Team. Adhering to the following process is the best way to get your work included in the project: -1. [Fork](https://help.github.com/articles/fork-a-repo/) the project, clone your fork, +1. [Fork](https://help.github.com/fork-a-repo/) the project, clone your fork, and configure the remotes: ```bash @@ -163,8 +164,8 @@ included in the project: 2. If you cloned a while ago, get the latest changes from upstream: ```bash - git checkout main - git pull upstream main + git checkout master + git pull upstream master ``` 3. Create a new topic branch (off the main project development branch) to @@ -175,15 +176,15 @@ included in the project: ``` 4. Commit your changes in logical chunks. Please adhere to these [git commit - message guidelines](https://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html) + message guidelines](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html) or your code is unlikely be merged into the main project. Use Git's - [interactive rebase](https://help.github.com/articles/about-git-rebase/) + [interactive rebase](https://help.github.com/articles/interactive-rebase) feature to tidy up your commits before making them public. 5. Locally merge (or rebase) the upstream development branch into your topic branch: ```bash - git pull [--rebase] upstream main + git pull [--rebase] upstream master ``` 6. Push your topic branch up to your fork: @@ -192,21 +193,30 @@ included in the project: git push origin ``` -7. [Open a Pull Request](https://help.github.com/articles/about-pull-requests/) - with a clear title and description against the `main` branch. +7. [Open a Pull Request](https://help.github.com/articles/using-pull-requests/) + with a clear title and description against the `master` branch. **IMPORTANT**: By submitting a patch, you agree to allow the project owners to -license your work under the terms of the [MIT License](../LICENSE) (if it +license your work under the terms of the [MIT License](LICENSE) (if it includes code changes) and under the terms of the -[Creative Commons Attribution 3.0 Unported License](https://creativecommons.org/licenses/by/3.0/) +[Creative Commons Attribution 3.0 Unported License](docs/LICENSE) (if it includes documentation changes). +### Pull request bots + +[@twbs-rorschach](https://github.com/twbs-rorschach) is a Bootstrap bot that hangs out in our GitHub issue tracker and automatically checks all pull requests for a few simple common mistakes. It's possible that Rorschach might leave a comment on your pull request and then close it. If that happens, simply fix the problem(s) mentioned in the comment (there should be link(s) in the comment explaining the problem(s) in detail) and then either: + +* Push the revised version to your pull request's branch and post a comment on the pull request saying that you've fixed the problem(s). One of the Bootstrap Core Team members will then come along and reopen your pull request. +* Or you can just open a new pull request for your revised version. + +[@twbs-savage](https://github.com/twbs-savage) is a Bootstrap bot that automatically runs cross-browser tests (via [Sauce](https://saucelabs.com) and Travis CI) on JavaScript pull requests. Savage will leave a comment on pull requests stating whether cross-browser JS tests passed or failed, with a link to the full Travis build details. If your pull request fails, check the Travis log to see which browser + OS combinations failed. Each browser test in the Travis log includes a link to a Sauce page with details about the test. On those details pages, you can watch a screencast of the test run to see exactly which unit tests failed. + ## Code guidelines ### HTML -[Adhere to the Code Guide.](https://codeguide.co/#html) +[Adhere to the Code Guide.](http://codeguide.co/#html) - Use tags and elements appropriate for an HTML5 doctype (e.g., self-closing tags). - Use CDNs and HTTPS for third-party JS when possible. We don't use protocol-relative URLs in this case because they break when viewing the page locally via `file://`. @@ -214,10 +224,10 @@ includes code changes) and under the terms of the ### CSS -[Adhere to the Code Guide.](https://codeguide.co/#css) +[Adhere to the Code Guide.](http://codeguide.co/#css) -- When feasible, default color palettes should comply with [WCAG color contrast guidelines](https://www.w3.org/TR/WCAG20/#visual-audio-contrast). -- Except in rare cases, don't remove default `:focus` styles (via e.g. `outline: none;`) without providing alternative styles. See [this A11Y Project post](https://www.a11yproject.com/posts/2013-01-25-never-remove-css-outlines/) for more details. +- When feasible, default color palettes should comply with [WCAG color contrast guidelines](http://www.w3.org/TR/WCAG20/#visual-audio-contrast). +- Except in rare cases, don't remove default `:focus` styles (via e.g. `outline: none;`) without providing alternative styles. See [this A11Y Project post](http://a11yproject.com/posts/never-remove-css-outlines/) for more details. ### JS @@ -228,12 +238,12 @@ includes code changes) and under the terms of the ### Checking coding style -Run `npm run test` before committing to ensure your changes follow our coding standards. +Run `grunt test` before committing to ensure your changes follow our coding standards. ## License -By contributing your code, you agree to license your contribution under the [MIT License](../LICENSE). -By contributing to the documentation, you agree to license your contribution under the [Creative Commons Attribution 3.0 Unported License](https://creativecommons.org/licenses/by/3.0/). +By contributing your code, you agree to license your contribution under the [MIT License](LICENSE). +By contributing to the documentation, you agree to license your contribution under the [Creative Commons Attribution 3.0 Unported License](docs/LICENSE). Prior to v3.1.0, Bootstrap's code was released under the Apache License v2.0. diff --git a/Gemfile b/Gemfile new file mode 100644 index 000000000..20a15efe7 --- /dev/null +++ b/Gemfile @@ -0,0 +1,12 @@ +# Ruby Gems for building and testing Bootstrap +# Run `grunt update-gemfile-lock` to update to the latest compatible versions + +source 'https://rubygems.org' + +group :development, :test do + gem 'jekyll', '~> 3.0.1' + gem 'jekyll-redirect-from', '~> 0.9.0' + gem 'jekyll-sitemap', '~> 0.9.0' + gem 'sass', '~> 3.4.19' + gem 'scss_lint', '~> 0.43' +end diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 000000000..720145482 --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,52 @@ +GEM + remote: https://rubygems.org/ + specs: + colorator (0.1) + ffi (1.9.10) + ffi (1.9.10-x64-mingw32) + jekyll (3.0.1) + colorator (~> 0.1) + jekyll-sass-converter (~> 1.0) + jekyll-watch (~> 1.1) + kramdown (~> 1.3) + liquid (~> 3.0) + mercenary (~> 0.3.3) + rouge (~> 1.7) + safe_yaml (~> 1.0) + jekyll-redirect-from (0.9.0) + jekyll (>= 2.0) + jekyll-sass-converter (1.3.0) + sass (~> 3.2) + jekyll-sitemap (0.9.0) + jekyll-watch (1.3.0) + listen (~> 3.0) + kramdown (1.9.0) + liquid (3.0.6) + listen (3.0.5) + rb-fsevent (>= 0.9.3) + rb-inotify (>= 0.9) + mercenary (0.3.5) + rainbow (2.0.0) + rb-fsevent (0.9.6) + rb-inotify (0.9.5) + ffi (>= 0.5.0) + rouge (1.10.1) + safe_yaml (1.0.4) + sass (3.4.19) + scss_lint (0.43.2) + rainbow (~> 2.0) + sass (~> 3.4.15) + +PLATFORMS + ruby + x64-mingw32 + +DEPENDENCIES + jekyll (~> 3.0.1) + jekyll-redirect-from (~> 0.9.0) + jekyll-sitemap (~> 0.9.0) + sass (~> 3.4.19) + scss_lint (~> 0.43) + +BUNDLED WITH + 1.10.6 diff --git a/Gruntfile.js b/Gruntfile.js new file mode 100644 index 000000000..fc6868be3 --- /dev/null +++ b/Gruntfile.js @@ -0,0 +1,549 @@ +/*! + * Bootstrap's Gruntfile + * http://getbootstrap.com + * Copyright 2013-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ + +module.exports = function (grunt) { + 'use strict'; + + // Force use of Unix newlines + grunt.util.linefeed = '\n'; + + RegExp.quote = function (string) { + return string.replace(/[-\\^$*+?.()|[\]{}]/g, '\\$&'); + }; + + var fs = require('fs'); + var path = require('path'); + var glob = require('glob'); + var isTravis = require('is-travis'); + var npmShrinkwrap = require('npm-shrinkwrap'); + var mq4HoverShim = require('mq4-hover-shim'); + var autoprefixer = require('autoprefixer')({ + browsers: [ + // + // Official browser support policy: + // http://v4-alpha.getbootstrap.com/getting-started/browsers-devices/#supported-browsers + // + 'Chrome >= 35', // Exact version number here is kinda arbitrary + // Rather than using Autoprefixer's native "Firefox ESR" version specifier string, + // we deliberately hardcode the number. This is to avoid unwittingly severely breaking the previous ESR in the event that: + // (a) we happen to ship a new Bootstrap release soon after the release of a new ESR, + // such that folks haven't yet had a reasonable amount of time to upgrade; and + // (b) the new ESR has unprefixed CSS properties/values whose absence would severely break webpages + // (e.g. `box-sizing`, as opposed to `background: linear-gradient(...)`). + // Since they've been unprefixed, Autoprefixer will stop prefixing them, + // thus causing them to not work in the previous ESR (where the prefixes were required). + 'Firefox >= 31', // Current Firefox Extended Support Release (ESR) + // Note: Edge versions in Autoprefixer & Can I Use refer to the EdgeHTML rendering engine version, + // NOT the Edge app version shown in Edge's "About" screen. + // For example, at the time of writing, Edge 20 on an up-to-date system uses EdgeHTML 12. + // See also https://github.com/Fyrd/caniuse/issues/1928 + 'Edge >= 12', + 'Explorer >= 9', + // Out of leniency, we prefix these 1 version further back than the official policy. + 'iOS >= 8', + 'Safari >= 8', + // The following remain NOT officially supported, but we're lenient and include their prefixes to avoid severely breaking in them. + 'Android 2.3', + 'Android >= 4', + 'Opera >= 12' + ] + }); + + var generateCommonJSModule = require('./grunt/bs-commonjs-generator.js'); + var configBridge = grunt.file.readJSON('./grunt/configBridge.json', { encoding: 'utf8' }); + + Object.keys(configBridge.paths).forEach(function (key) { + configBridge.paths[key].forEach(function (val, i, arr) { + arr[i] = path.join('./docs/assets', val); + }); + }); + + // Project configuration. + grunt.initConfig({ + + // Metadata. + pkg: grunt.file.readJSON('package.json'), + banner: '/*!\n' + + ' * Bootstrap v<%= pkg.version %> (<%= pkg.homepage %>)\n' + + ' * Copyright 2011-<%= grunt.template.today("yyyy") %> <%= pkg.author %>\n' + + ' * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n' + + ' */\n', + jqueryCheck: 'if (typeof jQuery === \'undefined\') {\n' + + ' throw new Error(\'Bootstrap\\\'s JavaScript requires jQuery\')\n' + + '}\n', + jqueryVersionCheck: '+function ($) {\n' + + ' var version = $.fn.jquery.split(\' \')[0].split(\'.\')\n' + + ' if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] >= 3)) {\n' + + ' throw new Error(\'Bootstrap\\\'s JavaScript requires at least jQuery v1.9.1 but less than v3.0.0\')\n' + + ' }\n' + + '}(jQuery);\n\n', + + // Task configuration. + clean: { + dist: 'dist', + docs: 'docs/dist' + }, + + // JS build configuration + lineremover: { + es6Import: { + files: { + '<%= concat.bootstrap.dest %>': '<%= concat.bootstrap.dest %>' + }, + options: { + exclusionPattern: /^(import|export)/g + } + } + }, + + babel: { + dev: { + options: { + sourceMap: true, + modules: 'ignore' + }, + files: { + 'js/dist/util.js' : 'js/src/util.js', + 'js/dist/alert.js' : 'js/src/alert.js', + 'js/dist/button.js' : 'js/src/button.js', + 'js/dist/carousel.js' : 'js/src/carousel.js', + 'js/dist/collapse.js' : 'js/src/collapse.js', + 'js/dist/dropdown.js' : 'js/src/dropdown.js', + 'js/dist/modal.js' : 'js/src/modal.js', + 'js/dist/scrollspy.js' : 'js/src/scrollspy.js', + 'js/dist/tab.js' : 'js/src/tab.js', + 'js/dist/tooltip.js' : 'js/src/tooltip.js', + 'js/dist/popover.js' : 'js/src/popover.js' + } + }, + dist: { + options: { + modules: 'ignore' + }, + files: { + '<%= concat.bootstrap.dest %>' : '<%= concat.bootstrap.dest %>' + } + }, + umd: { + options: { + modules: 'umd' + }, + files: { + 'dist/js/umd/util.js' : 'js/src/util.js', + 'dist/js/umd/alert.js' : 'js/src/alert.js', + 'dist/js/umd/button.js' : 'js/src/button.js', + 'dist/js/umd/carousel.js' : 'js/src/carousel.js', + 'dist/js/umd/collapse.js' : 'js/src/collapse.js', + 'dist/js/umd/dropdown.js' : 'js/src/dropdown.js', + 'dist/js/umd/modal.js' : 'js/src/modal.js', + 'dist/js/umd/scrollspy.js' : 'js/src/scrollspy.js', + 'dist/js/umd/tab.js' : 'js/src/tab.js', + 'dist/js/umd/tooltip.js' : 'js/src/tooltip.js', + 'dist/js/umd/popover.js' : 'js/src/popover.js' + } + } + }, + + eslint: { + options: { + configFile: 'js/.eslintrc' + }, + target: 'js/src/*.js' + }, + + jscs: { + options: { + config: 'js/.jscsrc' + }, + grunt: { + src: ['Gruntfile.js', 'grunt/*.js'] + }, + core: { + src: 'js/src/*.js' + }, + test: { + src: 'js/tests/unit/*.js' + }, + assets: { + options: { + requireCamelCaseOrUpperCaseIdentifiers: null + }, + src: ['docs/assets/js/src/*.js', 'docs/assets/js/*.js', '!docs/assets/js/*.min.js'] + } + }, + + stamp: { + options: { + banner: '<%= banner %>\n<%= jqueryCheck %>\n<%= jqueryVersionCheck %>\n+function ($) {\n', + footer: '\n}(jQuery);' + }, + bootstrap: { + files: { + src: '<%= concat.bootstrap.dest %>' + } + } + }, + + concat: { + options: { + stripBanners: false + }, + bootstrap: { + src: [ + 'js/src/util.js', + 'js/src/alert.js', + 'js/src/button.js', + 'js/src/carousel.js', + 'js/src/collapse.js', + 'js/src/dropdown.js', + 'js/src/modal.js', + 'js/src/scrollspy.js', + 'js/src/tab.js', + 'js/src/tooltip.js', + 'js/src/popover.js' + ], + dest: 'dist/js/<%= pkg.name %>.js' + } + }, + + uglify: { + options: { + compress: { + warnings: false + }, + mangle: true, + preserveComments: /^!|@preserve|@license|@cc_on/i + }, + core: { + src: '<%= concat.bootstrap.dest %>', + dest: 'dist/js/<%= pkg.name %>.min.js' + }, + docsJs: { + src: configBridge.paths.docsJs, + dest: 'docs/assets/js/docs.min.js' + } + }, + + qunit: { + options: { + inject: 'js/tests/unit/phantom.js' + }, + files: 'js/tests/index.html' + }, + + // CSS build configuration + scsslint: { + options: { + bundleExec: true, + config: 'scss/.scss-lint.yml', + reporterOutput: null + }, + src: ['scss/*.scss', '!scss/_normalize.scss'] + }, + + postcss: { + core: { + options: { + map: true, + processors: [ + mq4HoverShim.postprocessorFor({ hoverSelectorPrefix: '.bs-true-hover ' }), + autoprefixer + ] + }, + src: 'dist/css/*.css' + }, + docs: { + options: { + processors: [ + autoprefixer + ] + }, + src: 'docs/assets/css/docs.min.css' + }, + examples: { + options: { + processors: [ + autoprefixer + ] + }, + expand: true, + cwd: 'docs/examples/', + src: ['**/*.css'], + dest: 'docs/examples/' + } + }, + + cssmin: { + options: { + // TODO: disable `zeroUnits` optimization once clean-css 3.2 is released + // and then simplify the fix for https://github.com/twbs/bootstrap/issues/14837 accordingly + compatibility: 'ie9', + keepSpecialComments: '*', + sourceMap: true, + advanced: false + }, + core: { + files: [ + { + expand: true, + cwd: 'dist/css', + src: ['*.css', '!*.min.css'], + dest: 'dist/css', + ext: '.min.css' + } + ] + }, + docs: { + src: 'docs/assets/css/docs.min.css', + dest: 'docs/assets/css/docs.min.css' + } + }, + + csscomb: { + options: { + config: 'scss/.csscomb.json' + }, + dist: { + expand: true, + cwd: 'dist/css/', + src: ['*.css', '!*.min.css'], + dest: 'dist/css/' + }, + examples: { + expand: true, + cwd: 'docs/examples/', + src: '**/*.css', + dest: 'docs/examples/' + }, + docs: { + src: 'docs/assets/css/src/docs.css', + dest: 'docs/assets/css/src/docs.css' + } + }, + + copy: { + docs: { + expand: true, + cwd: 'dist/', + src: [ + '**/*' + ], + dest: 'docs/dist/' + } + }, + + connect: { + server: { + options: { + port: 3000, + base: '.' + } + } + }, + + jekyll: { + options: { + bundleExec: true, + config: '_config.yml', + incremental: false + }, + docs: {}, + github: { + options: { + raw: 'github: true' + } + } + }, + + htmllint: { + options: { + ignore: [ + 'Element “img” is missing required attribute “src”.', + 'Attribute “autocomplete” is only allowed when the input type is “color”, “date”, “datetime”, “datetime-local”, “email”, “month”, “number”, “password”, “range”, “search”, “tel”, “text”, “time”, “url”, or “week”.', + 'Attribute “autocomplete” not allowed on element “button” at this point.', + 'Element “div” not allowed as child of element “progress” in this context. (Suppressing further errors from this subtree.)', + 'Consider using the “h1” element as a top-level heading only (all “h1” elements are treated as top-level headings by many screen readers and other tools).', + 'The “datetime” input type is not supported in all browsers. Please be sure to test, and consider using a polyfill.' + ] + }, + src: ['_gh_pages/**/*.html', 'js/tests/visual/*.html'] + }, + + watch: { + src: { + files: '<%= jscs.core.src %>', + tasks: ['babel:dev'] + }, + sass: { + files: 'scss/**/*.scss', + tasks: ['dist-css', 'docs'] + }, + docs: { + files: 'docs/assets/scss/**/*.scss', + tasks: ['dist-css', 'docs'] + } + }, + + 'saucelabs-qunit': { + all: { + options: { + build: process.env.TRAVIS_JOB_ID, + concurrency: 10, + maxRetries: 3, + maxPollRetries: 4, + urls: ['http://127.0.0.1:3000/js/tests/index.html?hidepassed'], + browsers: grunt.file.readYAML('grunt/sauce_browsers.yml') + } + } + }, + + exec: { + npmUpdate: { + command: 'npm update' + } + }, + + buildcontrol: { + options: { + dir: '_gh_pages', + commit: true, + push: true, + message: 'Built %sourceName% from commit %sourceCommit% on branch %sourceBranch%' + }, + pages: { + options: { + remote: 'git@github.com:twbs/derpstrap.git', + branch: 'gh-pages' + } + } + }, + + compress: { + main: { + options: { + archive: 'bootstrap-<%= pkg.version %>-dist.zip', + mode: 'zip', + level: 9, + pretty: true + }, + files: [ + { + expand: true, + cwd: 'dist/', + src: ['**'], + dest: 'bootstrap-<%= pkg.version %>-dist' + } + ] + } + } + + }); + + + // These plugins provide necessary tasks. + require('load-grunt-tasks')(grunt, { scope: 'devDependencies', + // Exclude Sass compilers. We choose the one to load later on. + pattern: ['grunt-*', '!grunt-sass', '!grunt-contrib-sass'] }); + require('time-grunt')(grunt); + + // Docs HTML validation task + grunt.registerTask('validate-html', ['jekyll:docs', 'htmllint']); + + var runSubset = function (subset) { + return !process.env.TWBS_TEST || process.env.TWBS_TEST === subset; + }; + var isUndefOrNonZero = function (val) { + return val === undefined || val !== '0'; + }; + + // Test task. + var testSubtasks = []; + // Skip core tests if running a different subset of the test suite + if (runSubset('core') && + // Skip core tests if this is a Savage build + process.env.TRAVIS_REPO_SLUG !== 'twbs-savage/bootstrap') { + testSubtasks = testSubtasks.concat(['dist-css', 'dist-js', 'test-scss', 'test-js', 'docs']); + } + // Skip HTML validation if running a different subset of the test suite + if (runSubset('validate-html') && + isTravis && + // Skip HTML5 validator when [skip validator] is in the commit message + isUndefOrNonZero(process.env.TWBS_DO_VALIDATOR)) { + testSubtasks.push('validate-html'); + } + // Only run Sauce Labs tests if there's a Sauce access key + if (typeof process.env.SAUCE_ACCESS_KEY !== 'undefined' && + // Skip Sauce if running a different subset of the test suite + runSubset('sauce-js-unit') && + // Skip Sauce on Travis when [skip sauce] is in the commit message + isUndefOrNonZero(process.env.TWBS_DO_SAUCE)) { + testSubtasks.push('babel:dev'); + testSubtasks.push('connect'); + testSubtasks.push('saucelabs-qunit'); + } + grunt.registerTask('test', testSubtasks); + grunt.registerTask('test-js', ['eslint', 'jscs:core', 'jscs:test', 'jscs:grunt', 'qunit']); + + // JS distribution task. + grunt.registerTask('dist-js', ['babel:dev', 'concat', 'lineremover', 'babel:dist', 'stamp', 'uglify:core', 'commonjs']); + + grunt.registerTask('test-scss', ['scsslint']); + + // CSS distribution task. + // Supported Compilers: sass (Ruby) and libsass. + (function (sassCompilerName) { + require('./grunt/bs-sass-compile/' + sassCompilerName + '.js')(grunt); + })(process.env.TWBS_SASS || 'libsass'); + // grunt.registerTask('sass-compile', ['sass:core', 'sass:extras', 'sass:docs']); + grunt.registerTask('sass-compile', ['sass:core', 'sass:docs']); + + grunt.registerTask('dist-css', ['sass-compile', 'postcss:core', 'csscomb:dist', 'cssmin:core', 'cssmin:docs']); + + // Full distribution task. + grunt.registerTask('dist', ['clean:dist', 'dist-css', 'dist-js']); + + // Default task. + grunt.registerTask('default', ['clean:dist', 'test']); + + grunt.registerTask('commonjs', ['babel:umd', 'npm-js']); + + grunt.registerTask('npm-js', 'Generate npm-js entrypoint module in dist dir.', function () { + var srcFiles = Object.keys(grunt.config.get('babel.umd.files')).map(function (filename) { + return './' + path.join('umd', path.basename(filename)) + }) + var destFilepath = 'dist/js/npm.js'; + generateCommonJSModule(grunt, srcFiles, destFilepath); + }); + + // Docs task. + grunt.registerTask('docs-css', ['postcss:docs', 'postcss:examples', 'csscomb:docs', 'csscomb:examples', 'cssmin:docs']); + grunt.registerTask('docs-js', ['uglify:docsJs']); + grunt.registerTask('lint-docs-js', ['jscs:assets']); + grunt.registerTask('docs', ['docs-css', 'docs-js', 'lint-docs-js', 'clean:docs', 'copy:docs']); + grunt.registerTask('docs-github', ['jekyll:github', 'htmlmin']); + + grunt.registerTask('prep-release', ['dist', 'docs', 'docs-github', 'compress']); + + // Publish to GitHub + grunt.registerTask('publish', ['buildcontrol:pages']); + + // Task for updating the cached npm packages used by the Travis build (which are controlled by test-infra/npm-shrinkwrap.json). + // This task should be run and the updated file should be committed whenever Bootstrap's dependencies change. + grunt.registerTask('update-shrinkwrap', ['exec:npmUpdate', '_update-shrinkwrap']); + grunt.registerTask('_update-shrinkwrap', function () { + var done = this.async(); + npmShrinkwrap({ dev: true, dirname: __dirname }, function (err) { + if (err) { + grunt.fail.warn(err); + } + var dest = 'grunt/npm-shrinkwrap.json'; + fs.renameSync('npm-shrinkwrap.json', dest); + grunt.log.writeln('File ' + dest.cyan + ' updated.'); + done(); + }); + }); +}; diff --git a/LICENSE b/LICENSE index 72dda234e..f4c52d6a4 100644 --- a/LICENSE +++ b/LICENSE @@ -1,7 +1,6 @@ The MIT License (MIT) -Copyright (c) 2011-2021 Twitter, Inc. -Copyright (c) 2011-2021 The Bootstrap Authors +Copyright (c) 2011-2015 Twitter, Inc Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index f41498691..56cc64a91 100644 --- a/README.md +++ b/README.md @@ -1,173 +1,94 @@ - - - - - +# [Bootstrap](http://getbootstrap.com) -Bootstrap +[](https://bootstrap-slack.herokuapp.com) + +[](https://www.npmjs.com/package/bootstrap) +[](https://travis-ci.org/twbs/bootstrap) +[](https://david-dm.org/twbs/bootstrap#info=devDependencies) +[](https://www.nuget.org/packages/bootstrap/4.0.0-alpha) +[](https://saucelabs.com/u/bootstrap) - - Sleek, intuitive, and powerful front-end framework for faster and easier web development. - - Explore Bootstrap docs » - - - Report bug - · - Request feature - · - Themes - · - Blog - - - -## Bootstrap 4 - -Our default branch is for development of our upcoming Bootstrap 5 release. Head to the [`v4-dev` branch](https://github.com/twbs/bootstrap/tree/v4-dev) to view the readme, documentation, and source code for Bootstrap 4. +Bootstrap is a sleek, intuitive, and powerful front-end framework for faster and easier web development, created by [Mark Otto](https://twitter.com/mdo) and [Jacob Thornton](https://twitter.com/fat), and maintained by the [core team](https://github.com/orgs/twbs/people) with the massive support and involvement of the community. +To get started, check out ! ## Table of contents - [Quick start](#quick-start) -- [Status](#status) -- [What's included](#whats-included) - [Bugs and feature requests](#bugs-and-feature-requests) - [Documentation](#documentation) - [Contributing](#contributing) - [Community](#community) - [Versioning](#versioning) - [Creators](#creators) -- [Thanks](#thanks) - [Copyright and license](#copyright-and-license) - ## Quick start Several quick start options are available: -- [Download the latest release](https://github.com/twbs/bootstrap/archive/v5.0.0-beta1.zip) -- Clone the repo: `git clone https://github.com/twbs/bootstrap.git` -- Install with [npm](https://www.npmjs.com/): `npm install bootstrap@next` -- Install with [yarn](https://yarnpkg.com/): `yarn add bootstrap@next` -- Install with [Composer](https://getcomposer.org/): `composer require twbs/bootstrap:5.0.0-beta1` -- Install with [NuGet](https://www.nuget.org/): CSS: `Install-Package bootstrap` Sass: `Install-Package bootstrap.sass` +- [Download the latest release](https://github.com/twbs/bootstrap/archive/v4.0.0-alpha.2.zip). +- Clone the repo: `git clone https://github.com/twbs/bootstrap.git`. +- Install with [Bower](http://bower.io): `bower install bootstrap`. +- Install with [npm](https://www.npmjs.com): `npm install bootstrap`. +- Install with [Meteor](https://www.meteor.com): `meteor add twbs:bootstrap`. +- Install with [Composer](https://getcomposer.org): `composer require twbs/bootstrap`. +- Install with [NuGet](https://www.nuget.org): CSS: `Install-Package bootstrap -Pre` Sass: `Install-Package bootstrap.sass -Pre` (`-Pre` is only required until Bootstrap v4 has a stable release). -Read the [Getting started page](https://getbootstrap.com/docs/5.0/getting-started/introduction/) for information on the framework contents, templates and examples, and more. +Read the [Getting started page](http://getbootstrap.com/getting-started/) for information on the framework contents, templates and examples, and more. - -## Status - -[](https://bootstrap-slack.herokuapp.com/) -[](https://github.com/twbs/bootstrap/actions?query=workflow%3AJS+Tests+branch%3Amain) -[](https://www.npmjs.com/package/bootstrap) -[](https://rubygems.org/gems/bootstrap) -[](https://atmospherejs.com/twbs/bootstrap) -[](https://packagist.org/packages/twbs/bootstrap) -[](https://www.nuget.org/packages/bootstrap/absoluteLatest) -[](https://david-dm.org/twbs/bootstrap?type=peer) -[](https://david-dm.org/twbs/bootstrap?type=dev) -[](https://coveralls.io/github/twbs/bootstrap?branch=main) -[](https://github.com/twbs/bootstrap/blob/main/dist/css/bootstrap.min.css) -[](https://github.com/twbs/bootstrap/blob/main/dist/css/bootstrap.min.css) -[](https://github.com/twbs/bootstrap/blob/main/dist/js/bootstrap.min.js) -[](https://github.com/twbs/bootstrap/blob/main/dist/js/bootstrap.min.js) -[](https://www.browserstack.com/automate/public-build/SkxZcStBeExEdVJqQ2hWYnlWckpkNmNEY213SFp6WHFETWk2bGFuY3pCbz0tLXhqbHJsVlZhQnRBdEpod3NLSDMzaHc9PQ==--3d0b75245708616eb93113221beece33e680b229) -[](#backers) -[](#sponsors) - - -## What's included +### What's included Within the download you'll find the following directories and files, logically grouping common assets and providing both compiled and minified variations. You'll see something like this: -```text +``` bootstrap/ ├── css/ -│ ├── bootstrap-grid.css -│ ├── bootstrap-grid.css.map -│ ├── bootstrap-grid.min.css -│ ├── bootstrap-grid.min.css.map -│ ├── bootstrap-grid.rtl.css -│ ├── bootstrap-grid.rtl.css.map -│ ├── bootstrap-grid.rtl.min.css -│ ├── bootstrap-grid.rtl.min.css.map -│ ├── bootstrap-reboot.css -│ ├── bootstrap-reboot.css.map -│ ├── bootstrap-reboot.min.css -│ ├── bootstrap-reboot.min.css.map -│ ├── bootstrap-reboot.rtl.css -│ ├── bootstrap-reboot.rtl.css.map -│ ├── bootstrap-reboot.rtl.min.css -│ ├── bootstrap-reboot.rtl.min.css.map -│ ├── bootstrap-utilities.css -│ ├── bootstrap-utilities.css.map -│ ├── bootstrap-utilities.min.css -│ ├── bootstrap-utilities.min.css.map -│ ├── bootstrap-utilities.rtl.css -│ ├── bootstrap-utilities.rtl.css.map -│ ├── bootstrap-utilities.rtl.min.css -│ ├── bootstrap-utilities.rtl.min.css.map │ ├── bootstrap.css │ ├── bootstrap.css.map │ ├── bootstrap.min.css -│ ├── bootstrap.min.css.map -│ ├── bootstrap.rtl.css -│ ├── bootstrap.rtl.css.map -│ ├── bootstrap.rtl.min.css -│ └── bootstrap.rtl.min.css.map +│ └── bootstrap.min.css.map └── js/ - ├── bootstrap.bundle.js - ├── bootstrap.bundle.js.map - ├── bootstrap.bundle.min.js - ├── bootstrap.bundle.min.js.map - ├── bootstrap.esm.js - ├── bootstrap.esm.js.map - ├── bootstrap.esm.min.js - ├── bootstrap.esm.min.js.map ├── bootstrap.js - ├── bootstrap.js.map - ├── bootstrap.min.js - └── bootstrap.min.js.map + └── bootstrap.min.js ``` -We provide compiled CSS and JS (`bootstrap.*`), as well as compiled and minified CSS and JS (`bootstrap.min.*`). [source maps](https://developers.google.com/web/tools/chrome-devtools/javascript/source-maps) (`bootstrap.*.map`) are available for use with certain browsers' developer tools. Bundled JS files (`bootstrap.bundle.js` and minified `bootstrap.bundle.min.js`) include [Popper](https://popper.js.org/). +We provide compiled CSS and JS (`bootstrap.*`), as well as compiled and minified CSS and JS (`bootstrap.min.*`). CSS [source maps](https://developer.chrome.com/devtools/docs/css-preprocessors) (`bootstrap.*.map`) are available for use with certain browsers' developer tools. ## Bugs and feature requests -Have a bug or a feature request? Please first read the [issue guidelines](https://github.com/twbs/bootstrap/blob/main/.github/CONTRIBUTING.md#using-the-issue-tracker) and search for existing and closed issues. If your problem or idea is not addressed yet, [please open a new issue](https://github.com/twbs/bootstrap/issues/new). +Have a bug or a feature request? Please first read the [issue guidelines](https://github.com/twbs/bootstrap/blob/master/CONTRIBUTING.md#using-the-issue-tracker) and search for existing and closed issues. If your problem or idea is not addressed yet, [please open a new issue](https://github.com/twbs/bootstrap/issues/new). ## Documentation -Bootstrap's documentation, included in this repo in the root directory, is built with [Hugo](https://gohugo.io/) and publicly hosted on GitHub Pages at . The docs may also be run locally. - -Documentation search is powered by [Algolia's DocSearch](https://community.algolia.com/docsearch/). Working on our search? Be sure to set `debug: true` in `site/assets/js/search.js`. +Bootstrap's documentation, included in this repo in the root directory, is built with [Jekyll](http://jekyllrb.com) and publicly hosted on GitHub Pages at . The docs may also be run locally. ### Running documentation locally -1. Run `npm install` to install the Node.js dependencies, including Hugo (the site builder). -2. Run `npm run test` (or a specific npm script) to rebuild distributed CSS and JavaScript files, as well as our docs assets. -3. From the root `/bootstrap` directory, run `npm run docs-serve` in the command line. -4. Open `http://localhost:9001/` in your browser, and voilà. +1. Run through the [tooling setup](https://github.com/twbs/bootstrap/blob/v4-dev/docs/getting-started/build-tools.md#tooling-setup) to install Jekyll (the site builder) and other Ruby dependencies with `bundle install`. +2. From the root `/bootstrap` directory, run `bundle exec jekyll serve` in the command line. +3. Open in your browser, and voilà. -Learn more about using Hugo by reading its [documentation](https://gohugo.io/documentation/). +Learn more about using Jekyll by reading its [documentation](http://jekyllrb.com/docs/home/). ### Documentation for previous releases -You can find all our previous releases docs on . +Documentation for v2.3.2 has been made available for the time being at while folks transition to Bootstrap 3. [Previous releases](https://github.com/twbs/bootstrap/releases) and their documentation are also available for download. + ## Contributing -Please read through our [contributing guidelines](https://github.com/twbs/bootstrap/blob/main/.github/CONTRIBUTING.md). Included are directions for opening issues, coding standards, and notes on development. +Please read through our [contributing guidelines](https://github.com/twbs/bootstrap/blob/master/CONTRIBUTING.md). Included are directions for opening issues, coding standards, and notes on development. -Moreover, if your pull request contains JavaScript patches or features, you must include [relevant unit tests](https://github.com/twbs/bootstrap/tree/main/js/tests). All HTML and CSS should conform to the [Code Guide](https://github.com/mdo/code-guide), maintained by [Mark Otto](https://github.com/mdo). +Moreover, if your pull request contains JavaScript patches or features, you must include [relevant unit tests](https://github.com/twbs/bootstrap/tree/master/js/tests). All HTML and CSS should conform to the [Code Guide](https://github.com/mdo/code-guide), maintained by [Mark Otto](https://github.com/mdo). + +Editor preferences are available in the [editor config](https://github.com/twbs/bootstrap/blob/master/.editorconfig) for easy use in common text editors. Read more and download plugins at . -Editor preferences are available in the [editor config](https://github.com/twbs/bootstrap/blob/main/.editorconfig) for easy use in common text editors. Read more and download plugins at . ## Community @@ -175,18 +96,19 @@ Editor preferences are available in the [editor config](https://github.com/twbs/ Get updates on Bootstrap's development and chat with the project maintainers and community members. - Follow [@getbootstrap on Twitter](https://twitter.com/getbootstrap). -- Read and subscribe to [The Official Bootstrap Blog](https://blog.getbootstrap.com/). -- Join [the official Slack room](https://bootstrap-slack.herokuapp.com/). +- Read and subscribe to [The Official Bootstrap Blog](http://blog.getbootstrap.com). +- Join [the official Slack room](https://bootstrap-slack.herokuapp.com). - Chat with fellow Bootstrappers in IRC. On the `irc.freenode.net` server, in the `##bootstrap` channel. -- Implementation help may be found at Stack Overflow (tagged [`bootstrap-5`](https://stackoverflow.com/questions/tagged/bootstrap-5)). +- Implementation help may be found at Stack Overflow (tagged [`bootstrap-4`](https://stackoverflow.com/questions/tagged/bootstrap-4)). - Developers should use the keyword `bootstrap` on packages which modify or add to the functionality of Bootstrap when distributing through [npm](https://www.npmjs.com/browse/keyword/bootstrap) or similar delivery mechanisms for maximum discoverability. + ## Versioning -For transparency into our release cycle and in striving to maintain backward compatibility, Bootstrap is maintained under [the Semantic Versioning guidelines](https://semver.org/). Sometimes we screw up, but we adhere to those rules whenever possible. +For transparency into our release cycle and in striving to maintain backward compatibility, Bootstrap is maintained under [the Semantic Versioning guidelines](http://semver.org/). Sometimes we screw up, but we'll adhere to those rules whenever possible. -See [the Releases section of our GitHub project](https://github.com/twbs/bootstrap/releases) for changelogs for each release version of Bootstrap. Release announcement posts on [the official Bootstrap blog](https://blog.getbootstrap.com/) contain summaries of the most noteworthy changes made in each release. +See [the Releases section of our GitHub project](https://github.com/twbs/bootstrap/releases) for changelogs for each release version of Bootstrap. Release announcement posts on [the official Bootstrap blog](http://blog.getbootstrap.com) contain summaries of the most noteworthy changes made in each release. ## Creators @@ -202,38 +124,7 @@ See [the Releases section of our GitHub project](https://github.com/twbs/bootstr - -## Thanks - - - - - -Thanks to [BrowserStack](https://www.browserstack.com/) for providing the infrastructure that allows us to test in real browsers! - - -## Sponsors - -Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/bootstrap#sponsor)] - -[](https://opencollective.com/bootstrap/sponsor/0/website) -[](https://opencollective.com/bootstrap/sponsor/1/website) -[](https://opencollective.com/bootstrap/sponsor/2/website) -[](https://opencollective.com/bootstrap/sponsor/3/website) -[](https://opencollective.com/bootstrap/sponsor/4/website) -[](https://opencollective.com/bootstrap/sponsor/5/website) -[](https://opencollective.com/bootstrap/sponsor/6/website) -[](https://opencollective.com/bootstrap/sponsor/7/website) -[](https://opencollective.com/bootstrap/sponsor/8/website) -[](https://opencollective.com/bootstrap/sponsor/9/website) - - -## Backers - -Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com/bootstrap#backer)] - -[](https://opencollective.com/bootstrap#backers) - ## Copyright and license -Code and documentation copyright 2011–2021 the [Bootstrap Authors](https://github.com/twbs/bootstrap/graphs/contributors) and [Twitter, Inc.](https://twitter.com) Code released under the [MIT License](https://github.com/twbs/bootstrap/blob/main/LICENSE). Docs released under [Creative Commons](https://creativecommons.org/licenses/by/3.0/). +Code and documentation copyright 2011-2015 Twitter, Inc. Code released under [the MIT license](https://github.com/twbs/bootstrap/blob/master/LICENSE). Docs released under [Creative Commons](https://github.com/twbs/bootstrap/blob/master/docs/LICENSE). diff --git a/SECURITY.md b/SECURITY.md deleted file mode 100644 index e79dcd8d2..000000000 --- a/SECURITY.md +++ /dev/null @@ -1,7 +0,0 @@ -# Reporting Security Issues - -The Bootstrap team and community take security issues in Bootstrap seriously. We appreciate your efforts to responsibly disclose your findings, and will make every effort to acknowledge your contributions. - -To report a security issue, email [security@getbootstrap.com](mailto:security@getbootstrap.com) and include the word "SECURITY" in the subject line. - -We'll endeavor to respond quickly, and will keep you updated throughout the process. diff --git a/_config.yml b/_config.yml new file mode 100644 index 000000000..57b9aa7d8 --- /dev/null +++ b/_config.yml @@ -0,0 +1,44 @@ +# Dependencies +markdown: kramdown +highlighter: rouge + +kramdown: + auto_ids: true + +# Permalinks +permalink: pretty + +# Server +source: docs +destination: _gh_pages +host: 0.0.0.0 +port: 9001 +baseurl: "" +url: http://getbootstrap.com +encoding: UTF-8 +exclude: [assets/scss/] + +gems: + - jekyll-redirect-from + - jekyll-sitemap + +# Custom vars +current_version: 4.0.0-alpha.2 +repo: https://github.com/twbs/bootstrap +slack: https://bootstrap-slack.herokuapp.com + +download: + source: https://github.com/twbs/bootstrap/archive/v4.0.0-alpha.2.zip + dist: https://github.com/twbs/bootstrap/releases/download/v4.0.0-alpha.2/bootstrap-4.0.0-alpha.2-dist.zip + +blog: http://blog.getbootstrap.com +expo: http://expo.getbootstrap.com +themes: http://themes.getbootstrap.com + +cdn: + # See https://www.srihash.org for info on how to generate the hashes + css: https://cdn.rawgit.com/twbs/bootstrap/v4-dev/dist/css/bootstrap.css + css_hash: "sha384-XXXXXXXX" + js: https://cdn.rawgit.com/twbs/bootstrap/v4-dev/dist/js/bootstrap.js + js_hash: "sha384-XXXXXXXX" + jquery: https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js diff --git a/bower.json b/bower.json new file mode 100644 index 000000000..0d24a6392 --- /dev/null +++ b/bower.json @@ -0,0 +1,34 @@ +{ + "name": "bootstrap", + "description": "The most popular front-end framework for developing responsive, mobile first projects on the web.", + "keywords": [ + "css", + "js", + "sass", + "mobile-first", + "responsive", + "front-end", + "framework", + "web" + ], + "homepage": "http://getbootstrap.com", + "license": "MIT", + "moduleType": "globals", + "main": [ + "scss/bootstrap.scss", + "dist/js/bootstrap.js" + ], + "ignore": [ + "/.*", + "_config.yml", + "CNAME", + "composer.json", + "CONTRIBUTING.md", + "docs", + "js/tests", + "test-infra" + ], + "dependencies": { + "jquery": "1.9.1 - 2" + } +} diff --git a/build/.eslintrc.json b/build/.eslintrc.json deleted file mode 100644 index 679bd26f7..000000000 --- a/build/.eslintrc.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "env": { - "browser": false, - "node": true - }, - "parserOptions": { - "sourceType": "script" - }, - "extends": "../.eslintrc.json", - "rules": { - "no-console": "off", - "strict": "error" - } -} diff --git a/build/banner.js b/build/banner.js deleted file mode 100644 index df82ff32e..000000000 --- a/build/banner.js +++ /dev/null @@ -1,14 +0,0 @@ -'use strict' - -const pkg = require('../package.json') -const year = new Date().getFullYear() - -function getBanner(pluginFilename) { - return `/*! - * Bootstrap${pluginFilename ? ` ${pluginFilename}` : ''} v${pkg.version} (${pkg.homepage}) - * Copyright 2011-${year} ${pkg.author} - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */` -} - -module.exports = getBanner diff --git a/build/build-plugins.js b/build/build-plugins.js deleted file mode 100644 index d1930b855..000000000 --- a/build/build-plugins.js +++ /dev/null @@ -1,188 +0,0 @@ -#!/usr/bin/env node - -/*! - * Script to build our plugins to use them separately. - * Copyright 2020-2021 The Bootstrap Authors - * Copyright 2020-2021 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */ - -'use strict' - -const path = require('path') -const rollup = require('rollup') -const { babel } = require('@rollup/plugin-babel') -const banner = require('./banner.js') - -const rootPath = path.resolve(__dirname, '../js/dist/') -const plugins = [ - babel({ - // Only transpile our source code - exclude: 'node_modules/**', - // Include the helpers in each file, at most one copy of each - babelHelpers: 'bundled' - }) -] -const bsPlugins = { - Data: path.resolve(__dirname, '../js/src/dom/data.js'), - EventHandler: path.resolve(__dirname, '../js/src/dom/event-handler.js'), - Manipulator: path.resolve(__dirname, '../js/src/dom/manipulator.js'), - SelectorEngine: path.resolve(__dirname, '../js/src/dom/selector-engine.js'), - Alert: path.resolve(__dirname, '../js/src/alert.js'), - Base: path.resolve(__dirname, '../js/src/base-component.js'), - Button: path.resolve(__dirname, '../js/src/button.js'), - Carousel: path.resolve(__dirname, '../js/src/carousel.js'), - Collapse: path.resolve(__dirname, '../js/src/collapse.js'), - Dropdown: path.resolve(__dirname, '../js/src/dropdown.js'), - Modal: path.resolve(__dirname, '../js/src/modal.js'), - Popover: path.resolve(__dirname, '../js/src/popover.js'), - ScrollSpy: path.resolve(__dirname, '../js/src/scrollspy.js'), - Tab: path.resolve(__dirname, '../js/src/tab.js'), - Toast: path.resolve(__dirname, '../js/src/toast.js'), - Tooltip: path.resolve(__dirname, '../js/src/tooltip.js') -} - -const defaultPluginConfig = { - external: [ - bsPlugins.Data, - bsPlugins.Base, - bsPlugins.EventHandler, - bsPlugins.SelectorEngine - ], - globals: { - [bsPlugins.Data]: 'Data', - [bsPlugins.Base]: 'Base', - [bsPlugins.EventHandler]: 'EventHandler', - [bsPlugins.SelectorEngine]: 'SelectorEngine' - } -} - -const getConfigByPluginKey = pluginKey => { - if ( - pluginKey === 'Data' || - pluginKey === 'Manipulator' || - pluginKey === 'EventHandler' || - pluginKey === 'SelectorEngine' || - pluginKey === 'Util' || - pluginKey === 'Sanitizer' - ) { - return { - external: [] - } - } - - if (pluginKey === 'Alert' || pluginKey === 'Tab') { - return defaultPluginConfig - } - - if ( - pluginKey === 'Base' || - pluginKey === 'Button' || - pluginKey === 'Carousel' || - pluginKey === 'Collapse' || - pluginKey === 'Modal' || - pluginKey === 'ScrollSpy' - ) { - const config = Object.assign(defaultPluginConfig) - config.external.push(bsPlugins.Manipulator) - config.globals[bsPlugins.Manipulator] = 'Manipulator' - return config - } - - if (pluginKey === 'Dropdown' || pluginKey === 'Tooltip') { - const config = Object.assign(defaultPluginConfig) - config.external.push(bsPlugins.Manipulator, '@popperjs/core') - config.globals[bsPlugins.Manipulator] = 'Manipulator' - config.globals['@popperjs/core'] = 'Popper' - return config - } - - if (pluginKey === 'Popover') { - return { - external: [ - bsPlugins.Data, - bsPlugins.SelectorEngine, - bsPlugins.Tooltip - ], - globals: { - [bsPlugins.Data]: 'Data', - [bsPlugins.SelectorEngine]: 'SelectorEngine', - [bsPlugins.Tooltip]: 'Tooltip' - } - } - } - - if (pluginKey === 'Toast') { - return { - external: [ - bsPlugins.Data, - bsPlugins.Base, - bsPlugins.EventHandler, - bsPlugins.Manipulator - ], - globals: { - [bsPlugins.Data]: 'Data', - [bsPlugins.Base]: 'Base', - [bsPlugins.EventHandler]: 'EventHandler', - [bsPlugins.Manipulator]: 'Manipulator' - } - } - } -} - -const utilObjects = new Set([ - 'Util', - 'Sanitizer' -]) - -const domObjects = new Set([ - 'Data', - 'EventHandler', - 'Manipulator', - 'SelectorEngine' -]) - -const build = async plugin => { - console.log(`Building ${plugin} plugin...`) - - const { external, globals } = getConfigByPluginKey(plugin) - const pluginFilename = path.basename(bsPlugins[plugin]) - let pluginPath = rootPath - - if (utilObjects.has(plugin)) { - pluginPath = `${rootPath}/util/` - } - - if (domObjects.has(plugin)) { - pluginPath = `${rootPath}/dom/` - } - - const bundle = await rollup.rollup({ - input: bsPlugins[plugin], - plugins, - external - }) - - await bundle.write({ - banner: banner(pluginFilename), - format: 'umd', - name: plugin, - sourcemap: true, - globals, - file: path.resolve(__dirname, `${pluginPath}/${pluginFilename}`) - }) - - console.log(`Building ${plugin} plugin... Done!`) -} - -const main = async () => { - try { - await Promise.all(Object.keys(bsPlugins).map(plugin => build(plugin))) - } catch (error) { - console.error(error) - - process.exit(1) - } -} - -main() diff --git a/build/change-version.js b/build/change-version.js deleted file mode 100644 index 8086ed774..000000000 --- a/build/change-version.js +++ /dev/null @@ -1,112 +0,0 @@ -#!/usr/bin/env node - -/*! - * Script to update version number references in the project. - * Copyright 2017-2021 The Bootstrap Authors - * Copyright 2017-2021 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */ - -'use strict' - -const fs = require('fs') -const path = require('path') -const sh = require('shelljs') - -sh.config.fatal = true - -// Blame TC39... https://github.com/benjamingr/RegExp.escape/issues/37 -function regExpQuote(string) { - return string.replace(/[$()*+-.?[\\\]^{|}]/g, '\\$&') -} - -function regExpQuoteReplacement(string) { - return string.replace(/\$/g, '$$') -} - -const DRY_RUN = false - -function walkAsync(directory, excludedDirectories, fileCallback, errback) { - if (excludedDirectories.has(path.parse(directory).base)) { - return - } - - fs.readdir(directory, (err, names) => { - if (err) { - errback(err) - return - } - - names.forEach(name => { - const filepath = path.join(directory, name) - fs.lstat(filepath, (err, stats) => { - if (err) { - process.nextTick(errback, err) - return - } - - if (stats.isDirectory()) { - process.nextTick(walkAsync, filepath, excludedDirectories, fileCallback, errback) - } else if (stats.isFile()) { - process.nextTick(fileCallback, filepath) - } - }) - }) - }) -} - -function replaceRecursively(directory, excludedDirectories, allowedExtensions, original, replacement) { - original = new RegExp(regExpQuote(original), 'g') - replacement = regExpQuoteReplacement(replacement) - const updateFile = DRY_RUN ? - filepath => { - if (allowedExtensions.has(path.parse(filepath).ext)) { - console.log(`FILE: ${filepath}`) - } else { - console.log(`EXCLUDED:${filepath}`) - } - } : - filepath => { - if (allowedExtensions.has(path.parse(filepath).ext)) { - sh.sed('-i', original, replacement, filepath) - } - } - - walkAsync(directory, excludedDirectories, updateFile, err => { - console.error('ERROR while traversing directory!:') - console.error(err) - process.exit(1) - }) -} - -function main(args) { - if (args.length !== 2) { - console.error('USAGE: change-version old_version new_version') - console.error('Got arguments:', args) - process.exit(1) - } - - const oldVersion = args[0] - const newVersion = args[1] - const EXCLUDED_DIRS = new Set([ - '.git', - '_gh_pages', - 'node_modules', - 'vendor' - ]) - const INCLUDED_EXTENSIONS = new Set([ - // This extension allowlist is how we avoid modifying binary files - '', - '.css', - '.html', - '.js', - '.json', - '.md', - '.scss', - '.txt', - '.yml' - ]) - replaceRecursively('.', EXCLUDED_DIRS, INCLUDED_EXTENSIONS, oldVersion, newVersion) -} - -main(process.argv.slice(2)) diff --git a/build/generate-sri.js b/build/generate-sri.js deleted file mode 100644 index 221873b8f..000000000 --- a/build/generate-sri.js +++ /dev/null @@ -1,64 +0,0 @@ -#!/usr/bin/env node - -/*! - * Script to generate SRI hashes for use in our docs. - * Remember to use the same vendor files as the CDN ones, - * otherwise the hashes won't match! - * - * Copyright 2017-2021 The Bootstrap Authors - * Copyright 2017-2021 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */ - -'use strict' - -const crypto = require('crypto') -const fs = require('fs') -const path = require('path') -const sh = require('shelljs') - -sh.config.fatal = true - -const configFile = path.join(__dirname, '../config.yml') - -// Array of objects which holds the files to generate SRI hashes for. -// `file` is the path from the root folder -// `configPropertyName` is the config.yml variable's name of the file -const files = [ - { - file: 'dist/css/bootstrap.min.css', - configPropertyName: 'css_hash' - }, - { - file: 'dist/css/bootstrap.rtl.min.css', - configPropertyName: 'css_rtl_hash' - }, - { - file: 'dist/js/bootstrap.min.js', - configPropertyName: 'js_hash' - }, - { - file: 'dist/js/bootstrap.bundle.min.js', - configPropertyName: 'js_bundle_hash' - }, - { - file: 'node_modules/@popperjs/core/dist/umd/popper.min.js', - configPropertyName: 'popper_hash' - } -] - -files.forEach(file => { - fs.readFile(file.file, 'utf8', (err, data) => { - if (err) { - throw err - } - - const algo = 'sha384' - const hash = crypto.createHash(algo).update(data, 'utf8').digest('base64') - const integrity = `${algo}-${hash}` - - console.log(`${file.configPropertyName}: ${integrity}`) - - sh.sed('-i', new RegExp(`^(\\s+${file.configPropertyName}:\\s+["'])\\S*(["'])`), `$1${integrity}$2`, configFile) - }) -}) diff --git a/build/postcss.config.js b/build/postcss.config.js deleted file mode 100644 index b179a0e77..000000000 --- a/build/postcss.config.js +++ /dev/null @@ -1,19 +0,0 @@ -'use strict' - -module.exports = ctx => { - return { - map: ctx.file.dirname.includes('examples') ? - false : - { - inline: false, - annotation: true, - sourcesContent: true - }, - plugins: { - autoprefixer: { - cascade: false - }, - rtlcss: ctx.env === 'RTL' ? {} : false - } - } -} diff --git a/build/rollup.config.js b/build/rollup.config.js deleted file mode 100644 index 7f9c1c7e1..000000000 --- a/build/rollup.config.js +++ /dev/null @@ -1,50 +0,0 @@ -'use strict' - -const path = require('path') -const { babel } = require('@rollup/plugin-babel') -const { nodeResolve } = require('@rollup/plugin-node-resolve') -const replace = require('@rollup/plugin-replace') -const banner = require('./banner.js') - -const BUNDLE = process.env.BUNDLE === 'true' -const ESM = process.env.ESM === 'true' - -let fileDest = `bootstrap${ESM ? '.esm' : ''}` -const external = ['@popperjs/core'] -const plugins = [ - babel({ - // Only transpile our source code - exclude: 'node_modules/**', - // Include the helpers in the bundle, at most one copy of each - babelHelpers: 'bundled' - }) -] -const globals = { - '@popperjs/core': 'Popper' -} - -if (BUNDLE) { - fileDest += '.bundle' - // Remove last entry in external array to bundle Popper - external.pop() - delete globals['@popperjs/core'] - plugins.push(replace({ 'process.env.NODE_ENV': '"production"' }), nodeResolve()) -} - -const rollupConfig = { - input: path.resolve(__dirname, `../js/index.${ESM ? 'esm' : 'umd'}.js`), - output: { - banner, - file: path.resolve(__dirname, `../dist/js/${fileDest}.js`), - format: ESM ? 'esm' : 'umd', - globals - }, - external, - plugins -} - -if (!ESM) { - rollupConfig.output.name = 'bootstrap' -} - -module.exports = rollupConfig diff --git a/build/ship.sh b/build/ship.sh deleted file mode 100644 index da5a03bcd..000000000 --- a/build/ship.sh +++ /dev/null @@ -1,55 +0,0 @@ -#!/usr/bin/env bash - -set -e - -# -# Usage -# --------------- -# 1. Clone second version of Bootstrap in sibling directory named `bs-docs`. -# 2. Within `bs-docs` copy, switch to `gh-pages` branch. -# 3. Pull latest, re-bundle, re-npm. -# 4. Run script. - -red=$'\e[1;31m' -green=$'\e[1;32m' -#blue=$'\e[1;34m' -magenta=$'\e[1;35m' -#cyan=$'\e[1;36m' -end=$'\e[0m' - -# Get current version from package.json -current_version=$(node -p "require('./package.json').version") - -if [[ $# -lt 1 ]]; then - printf "\n%s⚠️ Shipping aborted. You must specify a version.\n%s" "$red" "$end" - exit 1 -fi - -# Pulling latest changes, just to be sure -printf "\n%s=======================================================%s" "$magenta" "$end" -printf "\n%sPulling latest changes...%s" "$magenta" "$end" -printf "\n%s=======================================================\n\n%s" "$magenta" "$end" -git pull origin main - -# Update version number -printf "\n%s=======================================================%s" "$magenta" "$end" -printf "\n%sUpdating version number...%s" "$magenta" "$end" -printf "\n%s=======================================================\n%s" "$magenta" "$end" -npm run release-version "$current_version" "$1" - -# Build release -printf "\n%s=======================================================%s" "$magenta" "$end" -printf "\n%sBuilding release...%s" "$magenta" "$end" -printf "\n%s=======================================================\n%s" "$magenta" "$end" -npm run release - -# Copy the contents of the built docs site over to `bs-docs` repo -printf "\n%s=======================================================%s" "$magenta" "$end" -printf "\n%sCopy it over...%s" "$magenta" "$end" -printf "\n%s=======================================================\n%s" "$magenta" "$end" -cp -rf _gh_pages/. ../bs-docs/ -printf "\nDone!\n" - -printf "\n%s=======================================================%s" "$green" "$end" -printf "\n%sSuccess, $1 is ready to review and publish.%s" "$green" "$end" -printf "\n%s=======================================================\n\n%s" "$green" "$end" diff --git a/build/svgo.yml b/build/svgo.yml deleted file mode 100644 index 67940d393..000000000 --- a/build/svgo.yml +++ /dev/null @@ -1,59 +0,0 @@ -# Usage: -# install svgo globally: `npm i -g svgo` -# svgo --config=build/svgo.yml --input=foo.svg - -# https://github.com/svg/svgo/blob/master/docs/how-it-works/en.md -# replace default config - -multipass: true -#full: true - -# https://github.com/svg/svgo/blob/master/lib/svgo/js2svg.js#L6 for more config options - -js2svg: - pretty: true - indent: 2 - -plugins: -# - addAttributesToSVGElement: -# attributes: -# - focusable: false - - cleanupAttrs: true - - cleanupEnableBackground: true - - cleanupIDs: true - - cleanupListOfValues: true - - cleanupNumericValues: true - - collapseGroups: true - - convertColors: true - - convertPathData: true - - convertShapeToPath: true - - convertStyleToAttrs: true - - convertTransform: true - - inlineStyles: true - - mergePaths: true - - minifyStyles: true - - moveElemsAttrsToGroup: true - - moveGroupAttrsToElems: true - - removeAttrs: - attrs: - - "data-name" - - removeComments: true - - removeDesc: true - - removeDoctype: true - - removeEditorsNSData: true - - removeEmptyAttrs: true - - removeEmptyContainers: true - - removeEmptyText: true - - removeHiddenElems: true - - removeMetadata: true - - removeNonInheritableGroupAttrs: true - - removeTitle: false - - removeUnknownsAndDefaults: - keepRoleAttr: true - - removeUnusedNS: true - - removeUselessDefs: true - - removeUselessStrokeAndFill: true - - removeViewBox: false - - removeXMLNS: false - - removeXMLProcInst: true - - sortAttrs: true diff --git a/build/vnu-jar.js b/build/vnu-jar.js deleted file mode 100644 index c23b94d60..000000000 --- a/build/vnu-jar.js +++ /dev/null @@ -1,66 +0,0 @@ -#!/usr/bin/env node - -/*! - * Script to run vnu-jar if Java is available. - * Copyright 2017-2021 The Bootstrap Authors - * Copyright 2017-2021 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */ - -'use strict' - -const childProcess = require('child_process') -const vnu = require('vnu-jar') - -childProcess.exec('java -version', (error, stdout, stderr) => { - if (error) { - console.error('Skipping vnu-jar test; Java is missing.') - return - } - - const is32bitJava = !/64-Bit/.test(stderr) - - // vnu-jar accepts multiple ignores joined with a `|`. - // Also note that the ignores are regular expressions. - const ignores = [ - // "autocomplete" is included in and checkboxes and radio s due to - // Firefox's non-standard autocomplete behavior - see https://bugzilla.mozilla.org/show_bug.cgi?id=654072 - 'Attribute “autocomplete” is only allowed when the input type is.*', - 'Attribute “autocomplete” not allowed on element “button” at this point.', - // Markup used in Components → Forms → Layout → Form grid → Horizontal form is currently invalid, - // but used this way due to lack of support for flexbox layout on element in most browsers - 'Element “legend” not allowed as child of element “div” in this context.*', - // Content → Reboot uses various date/time inputs as a visual example. - // Documentation does not rely on them being usable. - 'The “date” input type is not supported in all browsers.*', - 'The “week” input type is not supported in all browsers.*', - 'The “month” input type is not supported in all browsers.*', - 'The “color” input type is not supported in all browsers.*', - 'The “datetime-local” input type is not supported in all browsers.*', - 'The “time” input type is not supported in all browsers.*' - ].join('|') - - const args = [ - '-jar', - vnu, - '--asciiquotes', - '--skip-non-html', - // Ignore the language code warnings - '--no-langdetect', - '--Werror', - `--filterpattern "${ignores}"`, - '_gh_pages/', - 'js/tests/' - ] - - // For the 32-bit Java we need to pass `-Xss512k` - if (is32bitJava) { - args.splice(0, 0, '-Xss512k') - } - - return childProcess.spawn('java', args, { - shell: true, - stdio: 'inherit' - }) - .on('exit', process.exit) -}) diff --git a/build/zip-examples.js b/build/zip-examples.js deleted file mode 100644 index b2f156502..000000000 --- a/build/zip-examples.js +++ /dev/null @@ -1,90 +0,0 @@ -#!/usr/bin/env node - -/*! - * Script to create the built examples zip archive; - * requires the `zip` command to be present! - * Copyright 2020-2021 The Bootstrap Authors - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */ - -'use strict' - -const path = require('path') -const sh = require('shelljs') - -const pkg = require('../package.json') - -const versionShort = pkg.config.version_short -const distFolder = `bootstrap-${pkg.version}-examples` -const rootDocsDir = '_gh_pages' -const docsDir = `${rootDocsDir}/docs/${versionShort}/` - -// these are the files we need in the examples -const cssFiles = [ - 'bootstrap.min.css', - 'bootstrap.min.css.map', - 'bootstrap.rtl.min.css', - 'bootstrap.rtl.min.css.map' -] -const jsFiles = [ - 'bootstrap.bundle.min.js', - 'bootstrap.bundle.min.js.map' -] -const imgFiles = [ - 'bootstrap-logo.svg', - 'bootstrap-logo-white.svg' -] - -sh.config.fatal = true - -if (!sh.test('-d', rootDocsDir)) { - throw new Error(`The "${rootDocsDir}" folder does not exist, did you forget building the docs?`) -} - -// switch to the root dir -sh.cd(path.join(__dirname, '..')) - -// remove any previously created folder/zip with the same name -sh.rm('-rf', [distFolder, `${distFolder}.zip`]) - -// create any folders so that `cp` works -sh.mkdir('-p', [ - distFolder, - `${distFolder}/assets/brand/`, - `${distFolder}/assets/dist/css/`, - `${distFolder}/assets/dist/js/` -]) - -sh.cp('-Rf', `${docsDir}/examples/*`, distFolder) - -cssFiles.forEach(file => { - sh.cp('-f', `${docsDir}/dist/css/${file}`, `${distFolder}/assets/dist/css/`) -}) - -jsFiles.forEach(file => { - sh.cp('-f', `${docsDir}/dist/js/${file}`, `${distFolder}/assets/dist/js/`) -}) - -imgFiles.forEach(file => { - sh.cp('-f', `${docsDir}/assets/brand/${file}`, `${distFolder}/assets/brand/`) -}) - -sh.rm(`${distFolder}/index.html`) - -// get all examples' HTML files -sh.find(`${distFolder}/**/*.html`).forEach(file => { - const fileContents = sh.cat(file) - .toString() - .replace(new RegExp(`"/docs/${versionShort}/`, 'g'), '"../') - .replace(/"..\/dist\//g, '"../assets/dist/') - .replace(/(/g, '$1>') - .replace(/(') - .replace(/( +) 'click') - - var typeEvent = originalTypeEvent.replace(stripNameRegex, ''); - var custom = customEvents[typeEvent]; - - if (custom) { - typeEvent = custom; - } - - var isNative = nativeEvents.has(typeEvent); - - if (!isNative) { - typeEvent = originalTypeEvent; - } - - return [delegation, originalHandler, typeEvent]; - } - - function addHandler(element, originalTypeEvent, handler, delegationFn, oneOff) { - if (typeof originalTypeEvent !== 'string' || !element) { - return; - } - - if (!handler) { - handler = delegationFn; - delegationFn = null; - } - - var _normalizeParams = normalizeParams(originalTypeEvent, handler, delegationFn), - delegation = _normalizeParams[0], - originalHandler = _normalizeParams[1], - typeEvent = _normalizeParams[2]; - - var events = getEvent(element); - var handlers = events[typeEvent] || (events[typeEvent] = {}); - var previousFn = findHandler(handlers, originalHandler, delegation ? handler : null); - - if (previousFn) { - previousFn.oneOff = previousFn.oneOff && oneOff; - return; - } - - var uid = getUidEvent(originalHandler, originalTypeEvent.replace(namespaceRegex, '')); - var fn = delegation ? bootstrapDelegationHandler(element, handler, delegationFn) : bootstrapHandler(element, handler); - fn.delegationSelector = delegation ? handler : null; - fn.originalHandler = originalHandler; - fn.oneOff = oneOff; - fn.uidEvent = uid; - handlers[uid] = fn; - element.addEventListener(typeEvent, fn, delegation); - } - - function removeHandler(element, events, typeEvent, handler, delegationSelector) { - var 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) { - var storeElementEvent = events[typeEvent] || {}; - Object.keys(storeElementEvent).forEach(function (handlerKey) { - if (handlerKey.includes(namespace)) { - var event = storeElementEvent[handlerKey]; - removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector); - } - }); - } - - var EventHandler = { - on: function on(element, event, handler, delegationFn) { - addHandler(element, event, handler, delegationFn, false); - }, - one: function one(element, event, handler, delegationFn) { - addHandler(element, event, handler, delegationFn, true); - }, - off: function off(element, originalTypeEvent, handler, delegationFn) { - if (typeof originalTypeEvent !== 'string' || !element) { - return; - } - - var _normalizeParams2 = normalizeParams(originalTypeEvent, handler, delegationFn), - delegation = _normalizeParams2[0], - originalHandler = _normalizeParams2[1], - typeEvent = _normalizeParams2[2]; - - var inNamespace = typeEvent !== originalTypeEvent; - var events = getEvent(element); - var isNamespace = originalTypeEvent.startsWith('.'); - - if (typeof originalHandler !== 'undefined') { - // Simplest case: handler is passed, remove that listener ONLY. - if (!events || !events[typeEvent]) { - return; - } - - removeHandler(element, events, typeEvent, originalHandler, delegation ? handler : null); - return; - } - - if (isNamespace) { - Object.keys(events).forEach(function (elementEvent) { - removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1)); - }); - } - - var storeElementEvent = events[typeEvent] || {}; - Object.keys(storeElementEvent).forEach(function (keyHandlers) { - var handlerKey = keyHandlers.replace(stripUidRegex, ''); - - if (!inNamespace || originalTypeEvent.includes(handlerKey)) { - var event = storeElementEvent[keyHandlers]; - removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector); - } - }); - }, - trigger: function trigger(element, event, args) { - if (typeof event !== 'string' || !element) { - return null; - } - - var $ = getjQuery(); - var typeEvent = event.replace(stripNameRegex, ''); - var inNamespace = event !== typeEvent; - var isNative = nativeEvents.has(typeEvent); - var jQueryEvent; - var bubbles = true; - var nativeDispatch = true; - var defaultPrevented = false; - var evt = null; - - if (inNamespace && $) { - jQueryEvent = $.Event(event, args); - $(element).trigger(jQueryEvent); - bubbles = !jQueryEvent.isPropagationStopped(); - nativeDispatch = !jQueryEvent.isImmediatePropagationStopped(); - defaultPrevented = jQueryEvent.isDefaultPrevented(); - } - - if (isNative) { - evt = document.createEvent('HTMLEvents'); - evt.initEvent(typeEvent, bubbles, true); - } else { - evt = new CustomEvent(event, { - bubbles: bubbles, - cancelable: true - }); - } // merge custom information in our event - - - if (typeof args !== 'undefined') { - Object.keys(args).forEach(function (key) { - Object.defineProperty(evt, key, { - get: function get() { - return args[key]; - } - }); - }); - } - - if (defaultPrevented) { - evt.preventDefault(); - } - - if (nativeDispatch) { - element.dispatchEvent(evt); - } - - if (evt.defaultPrevented && typeof jQueryEvent !== 'undefined') { - jQueryEvent.preventDefault(); - } - - return evt; - } - }; - - /** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - - var VERSION = '5.0.0-beta1'; - - var BaseComponent = /*#__PURE__*/function () { - function BaseComponent(element) { - if (!element) { - return; - } - - this._element = element; - Data.setData(element, this.constructor.DATA_KEY, this); - } - - var _proto = BaseComponent.prototype; - - _proto.dispose = function dispose() { - Data.removeData(this._element, this.constructor.DATA_KEY); - this._element = null; - } - /** Static */ - ; - - BaseComponent.getInstance = function getInstance(element) { - return Data.getData(element, this.DATA_KEY); - }; - - _createClass(BaseComponent, null, [{ - key: "VERSION", - get: function get() { - return VERSION; - } - }]); - - return BaseComponent; - }(); - - /** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - - var NAME = 'alert'; - var DATA_KEY = 'bs.alert'; - var EVENT_KEY = "." + DATA_KEY; - var DATA_API_KEY = '.data-api'; - var SELECTOR_DISMISS = '[data-bs-dismiss="alert"]'; - var EVENT_CLOSE = "close" + EVENT_KEY; - var EVENT_CLOSED = "closed" + EVENT_KEY; - var EVENT_CLICK_DATA_API = "click" + EVENT_KEY + DATA_API_KEY; - var CLASSNAME_ALERT = 'alert'; - var CLASSNAME_FADE = 'fade'; - var CLASSNAME_SHOW = 'show'; - /** - * ------------------------------------------------------------------------ - * Class Definition - * ------------------------------------------------------------------------ - */ - - var Alert = /*#__PURE__*/function (_BaseComponent) { - _inheritsLoose(Alert, _BaseComponent); - - function Alert() { - return _BaseComponent.apply(this, arguments) || this; - } - - var _proto = Alert.prototype; - - // Public - _proto.close = function close(element) { - var rootElement = element ? this._getRootElement(element) : this._element; - - var customEvent = this._triggerCloseEvent(rootElement); - - if (customEvent === null || customEvent.defaultPrevented) { - return; - } - - this._removeElement(rootElement); - } // Private - ; - - _proto._getRootElement = function _getRootElement(element) { - return getElementFromSelector(element) || element.closest("." + CLASSNAME_ALERT); - }; - - _proto._triggerCloseEvent = function _triggerCloseEvent(element) { - return EventHandler.trigger(element, EVENT_CLOSE); - }; - - _proto._removeElement = function _removeElement(element) { - var _this = this; - - element.classList.remove(CLASSNAME_SHOW); - - if (!element.classList.contains(CLASSNAME_FADE)) { - this._destroyElement(element); - - return; - } - - var transitionDuration = getTransitionDurationFromElement(element); - EventHandler.one(element, TRANSITION_END, function () { - return _this._destroyElement(element); - }); - emulateTransitionEnd(element, transitionDuration); - }; - - _proto._destroyElement = function _destroyElement(element) { - if (element.parentNode) { - element.parentNode.removeChild(element); - } - - EventHandler.trigger(element, EVENT_CLOSED); - } // Static - ; - - Alert.jQueryInterface = function jQueryInterface(config) { - return this.each(function () { - var data = Data.getData(this, DATA_KEY); - - if (!data) { - data = new Alert(this); - } - - if (config === 'close') { - data[config](this); - } - }); - }; - - Alert.handleDismiss = function handleDismiss(alertInstance) { - return function (event) { - if (event) { - event.preventDefault(); - } - - alertInstance.close(this); - }; - }; - - _createClass(Alert, null, [{ - key: "DATA_KEY", - // Getters - get: function get() { - return DATA_KEY; - } - }]); - - return Alert; - }(BaseComponent); - /** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ - - - EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DISMISS, Alert.handleDismiss(new Alert())); - /** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - * add .Alert to jQuery only if jQuery is present - */ - - onDOMContentLoaded(function () { - var $ = getjQuery(); - /* istanbul ignore if */ - - if ($) { - var JQUERY_NO_CONFLICT = $.fn[NAME]; - $.fn[NAME] = Alert.jQueryInterface; - $.fn[NAME].Constructor = Alert; - - $.fn[NAME].noConflict = function () { - $.fn[NAME] = JQUERY_NO_CONFLICT; - return Alert.jQueryInterface; - }; - } - }); - - /** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - - var NAME$1 = 'button'; - var DATA_KEY$1 = 'bs.button'; - var EVENT_KEY$1 = "." + DATA_KEY$1; - var DATA_API_KEY$1 = '.data-api'; - var CLASS_NAME_ACTIVE = 'active'; - var SELECTOR_DATA_TOGGLE = '[data-bs-toggle="button"]'; - var EVENT_CLICK_DATA_API$1 = "click" + EVENT_KEY$1 + DATA_API_KEY$1; - /** - * ------------------------------------------------------------------------ - * Class Definition - * ------------------------------------------------------------------------ - */ - - var Button = /*#__PURE__*/function (_BaseComponent) { - _inheritsLoose(Button, _BaseComponent); - - function Button() { - return _BaseComponent.apply(this, arguments) || this; - } - - var _proto = Button.prototype; - - // Public - _proto.toggle = function toggle() { - // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method - this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE)); - } // Static - ; - - Button.jQueryInterface = function jQueryInterface(config) { - return this.each(function () { - var data = Data.getData(this, DATA_KEY$1); - - if (!data) { - data = new Button(this); - } - - if (config === 'toggle') { - data[config](); - } - }); - }; - - _createClass(Button, null, [{ - key: "DATA_KEY", - // Getters - get: function get() { - return DATA_KEY$1; - } - }]); - - return Button; - }(BaseComponent); - /** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ - - - EventHandler.on(document, EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE, function (event) { - event.preventDefault(); - var button = event.target.closest(SELECTOR_DATA_TOGGLE); - var data = Data.getData(button, DATA_KEY$1); - - if (!data) { - data = new Button(button); - } - - data.toggle(); - }); - /** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - * add .Button to jQuery only if jQuery is present - */ - - onDOMContentLoaded(function () { - var $ = getjQuery(); - /* istanbul ignore if */ - - if ($) { - var JQUERY_NO_CONFLICT = $.fn[NAME$1]; - $.fn[NAME$1] = Button.jQueryInterface; - $.fn[NAME$1].Constructor = Button; - - $.fn[NAME$1].noConflict = function () { - $.fn[NAME$1] = JQUERY_NO_CONFLICT; - return Button.jQueryInterface; - }; - } - }); - - /** - * -------------------------------------------------------------------------- - * Bootstrap (v5.0.0-beta1): dom/manipulator.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ - function normalizeData(val) { - if (val === 'true') { - return true; - } - - if (val === 'false') { - return false; - } - - if (val === Number(val).toString()) { - return Number(val); - } - - if (val === '' || val === 'null') { - return null; - } - - return val; - } - - function normalizeDataKey(key) { - return key.replace(/[A-Z]/g, function (chr) { - return "-" + chr.toLowerCase(); - }); - } - - var Manipulator = { - setDataAttribute: function setDataAttribute(element, key, value) { - element.setAttribute("data-bs-" + normalizeDataKey(key), value); - }, - removeDataAttribute: function removeDataAttribute(element, key) { - element.removeAttribute("data-bs-" + normalizeDataKey(key)); - }, - getDataAttributes: function getDataAttributes(element) { - if (!element) { - return {}; - } - - var attributes = {}; - Object.keys(element.dataset).filter(function (key) { - return key.startsWith('bs'); - }).forEach(function (key) { - var pureKey = key.replace(/^bs/, ''); - pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length); - attributes[pureKey] = normalizeData(element.dataset[key]); - }); - return attributes; - }, - getDataAttribute: function getDataAttribute(element, key) { - return normalizeData(element.getAttribute("data-bs-" + normalizeDataKey(key))); - }, - offset: function offset(element) { - var rect = element.getBoundingClientRect(); - return { - top: rect.top + document.body.scrollTop, - left: rect.left + document.body.scrollLeft - }; - }, - position: function position(element) { - return { - top: element.offsetTop, - left: element.offsetLeft - }; - } - }; - - /** - * -------------------------------------------------------------------------- - * Bootstrap (v5.0.0-beta1): dom/selector-engine.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ - - /** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - var NODE_TEXT = 3; - var SelectorEngine = { - matches: function matches(element, selector) { - return element.matches(selector); - }, - find: function find(selector, element) { - var _ref; - - if (element === void 0) { - element = document.documentElement; - } - - return (_ref = []).concat.apply(_ref, Element.prototype.querySelectorAll.call(element, selector)); - }, - findOne: function findOne(selector, element) { - if (element === void 0) { - element = document.documentElement; - } - - return Element.prototype.querySelector.call(element, selector); - }, - children: function children(element, selector) { - var _ref2; - - var children = (_ref2 = []).concat.apply(_ref2, element.children); - - return children.filter(function (child) { - return child.matches(selector); - }); - }, - parents: function parents(element, selector) { - var parents = []; - var ancestor = element.parentNode; - - while (ancestor && ancestor.nodeType === Node.ELEMENT_NODE && ancestor.nodeType !== NODE_TEXT) { - if (this.matches(ancestor, selector)) { - parents.push(ancestor); - } - - ancestor = ancestor.parentNode; - } - - return parents; - }, - prev: function prev(element, selector) { - var previous = element.previousElementSibling; - - while (previous) { - if (previous.matches(selector)) { - return [previous]; - } - - previous = previous.previousElementSibling; - } - - return []; - }, - next: function next(element, selector) { - var next = element.nextElementSibling; - - while (next) { - if (this.matches(next, selector)) { - return [next]; - } - - next = next.nextElementSibling; - } - - return []; - } - }; - - /** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - - var NAME$2 = 'carousel'; - var DATA_KEY$2 = 'bs.carousel'; - var EVENT_KEY$2 = "." + DATA_KEY$2; - var DATA_API_KEY$2 = '.data-api'; - var ARROW_LEFT_KEY = 'ArrowLeft'; - var ARROW_RIGHT_KEY = 'ArrowRight'; - var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch - - var SWIPE_THRESHOLD = 40; - var Default = { - interval: 5000, - keyboard: true, - slide: false, - pause: 'hover', - wrap: true, - touch: true - }; - var DefaultType = { - interval: '(number|boolean)', - keyboard: 'boolean', - slide: '(boolean|string)', - pause: '(string|boolean)', - wrap: 'boolean', - touch: 'boolean' - }; - var DIRECTION_NEXT = 'next'; - var DIRECTION_PREV = 'prev'; - var DIRECTION_LEFT = 'left'; - var DIRECTION_RIGHT = 'right'; - var EVENT_SLIDE = "slide" + EVENT_KEY$2; - var EVENT_SLID = "slid" + EVENT_KEY$2; - var EVENT_KEYDOWN = "keydown" + EVENT_KEY$2; - var EVENT_MOUSEENTER = "mouseenter" + EVENT_KEY$2; - var EVENT_MOUSELEAVE = "mouseleave" + EVENT_KEY$2; - var EVENT_TOUCHSTART = "touchstart" + EVENT_KEY$2; - var EVENT_TOUCHMOVE = "touchmove" + EVENT_KEY$2; - var EVENT_TOUCHEND = "touchend" + EVENT_KEY$2; - var EVENT_POINTERDOWN = "pointerdown" + EVENT_KEY$2; - var EVENT_POINTERUP = "pointerup" + EVENT_KEY$2; - var EVENT_DRAG_START = "dragstart" + EVENT_KEY$2; - var EVENT_LOAD_DATA_API = "load" + EVENT_KEY$2 + DATA_API_KEY$2; - var EVENT_CLICK_DATA_API$2 = "click" + EVENT_KEY$2 + DATA_API_KEY$2; - var CLASS_NAME_CAROUSEL = 'carousel'; - var CLASS_NAME_ACTIVE$1 = 'active'; - var CLASS_NAME_SLIDE = 'slide'; - var CLASS_NAME_END = 'carousel-item-end'; - var CLASS_NAME_START = 'carousel-item-start'; - var CLASS_NAME_NEXT = 'carousel-item-next'; - var CLASS_NAME_PREV = 'carousel-item-prev'; - var CLASS_NAME_POINTER_EVENT = 'pointer-event'; - var SELECTOR_ACTIVE = '.active'; - var SELECTOR_ACTIVE_ITEM = '.active.carousel-item'; - var SELECTOR_ITEM = '.carousel-item'; - var SELECTOR_ITEM_IMG = '.carousel-item img'; - var SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev'; - var SELECTOR_INDICATORS = '.carousel-indicators'; - var SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'; - var SELECTOR_DATA_RIDE = '[data-bs-ride="carousel"]'; - var PointerType = { - TOUCH: 'touch', - PEN: 'pen' - }; - /** - * ------------------------------------------------------------------------ - * Class Definition - * ------------------------------------------------------------------------ - */ - - var Carousel = /*#__PURE__*/function (_BaseComponent) { - _inheritsLoose(Carousel, _BaseComponent); - - function Carousel(element, config) { - var _this; - - _this = _BaseComponent.call(this, element) || this; - _this._items = null; - _this._interval = null; - _this._activeElement = null; - _this._isPaused = false; - _this._isSliding = false; - _this.touchTimeout = null; - _this.touchStartX = 0; - _this.touchDeltaX = 0; - _this._config = _this._getConfig(config); - _this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, _this._element); - _this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0; - _this._pointerEvent = Boolean(window.PointerEvent); - - _this._addEventListeners(); - - return _this; - } // Getters - - - var _proto = Carousel.prototype; - - // Public - _proto.next = function next() { - if (!this._isSliding) { - this._slide(DIRECTION_NEXT); - } - }; - - _proto.nextWhenVisible = function nextWhenVisible() { - // Don't call next when the page isn't visible - // or the carousel or its parent isn't visible - if (!document.hidden && isVisible(this._element)) { - this.next(); - } - }; - - _proto.prev = function prev() { - if (!this._isSliding) { - this._slide(DIRECTION_PREV); - } - }; - - _proto.pause = function pause(event) { - if (!event) { - this._isPaused = true; - } - - if (SelectorEngine.findOne(SELECTOR_NEXT_PREV, this._element)) { - triggerTransitionEnd(this._element); - this.cycle(true); - } - - clearInterval(this._interval); - this._interval = null; - }; - - _proto.cycle = function cycle(event) { - if (!event) { - this._isPaused = false; - } - - if (this._interval) { - clearInterval(this._interval); - this._interval = null; - } - - if (this._config && this._config.interval && !this._isPaused) { - this._updateInterval(); - - this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval); - } - }; - - _proto.to = function to(index) { - var _this2 = this; - - this._activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element); - - var activeIndex = this._getItemIndex(this._activeElement); - - if (index > this._items.length - 1 || index < 0) { - return; - } - - if (this._isSliding) { - EventHandler.one(this._element, EVENT_SLID, function () { - return _this2.to(index); - }); - return; - } - - if (activeIndex === index) { - this.pause(); - this.cycle(); - return; - } - - var direction = index > activeIndex ? DIRECTION_NEXT : DIRECTION_PREV; - - this._slide(direction, this._items[index]); - }; - - _proto.dispose = function dispose() { - _BaseComponent.prototype.dispose.call(this); - - EventHandler.off(this._element, EVENT_KEY$2); - this._items = null; - this._config = null; - this._interval = null; - this._isPaused = null; - this._isSliding = null; - this._activeElement = null; - this._indicatorsElement = null; - } // Private - ; - - _proto._getConfig = function _getConfig(config) { - config = _extends({}, Default, config); - typeCheckConfig(NAME$2, config, DefaultType); - return config; - }; - - _proto._handleSwipe = function _handleSwipe() { - var absDeltax = Math.abs(this.touchDeltaX); - - if (absDeltax <= SWIPE_THRESHOLD) { - return; - } - - var direction = absDeltax / this.touchDeltaX; - this.touchDeltaX = 0; // swipe left - - if (direction > 0) { - this.prev(); - } // swipe right - - - if (direction < 0) { - this.next(); - } - }; - - _proto._addEventListeners = function _addEventListeners() { - var _this3 = this; - - if (this._config.keyboard) { - EventHandler.on(this._element, EVENT_KEYDOWN, function (event) { - return _this3._keydown(event); - }); - } - - if (this._config.pause === 'hover') { - EventHandler.on(this._element, EVENT_MOUSEENTER, function (event) { - return _this3.pause(event); - }); - EventHandler.on(this._element, EVENT_MOUSELEAVE, function (event) { - return _this3.cycle(event); - }); - } - - if (this._config.touch && this._touchSupported) { - this._addTouchEventListeners(); - } - }; - - _proto._addTouchEventListeners = function _addTouchEventListeners() { - var _this4 = this; - - var start = function start(event) { - if (_this4._pointerEvent && PointerType[event.pointerType.toUpperCase()]) { - _this4.touchStartX = event.clientX; - } else if (!_this4._pointerEvent) { - _this4.touchStartX = event.touches[0].clientX; - } - }; - - var move = function move(event) { - // ensure swiping with one touch and not pinching - if (event.touches && event.touches.length > 1) { - _this4.touchDeltaX = 0; - } else { - _this4.touchDeltaX = event.touches[0].clientX - _this4.touchStartX; - } - }; - - var end = function end(event) { - if (_this4._pointerEvent && PointerType[event.pointerType.toUpperCase()]) { - _this4.touchDeltaX = event.clientX - _this4.touchStartX; - } - - _this4._handleSwipe(); - - if (_this4._config.pause === 'hover') { - // If it's a touch-enabled device, mouseenter/leave are fired as - // part of the mouse compatibility events on first tap - the carousel - // would stop cycling until user tapped out of it; - // here, we listen for touchend, explicitly pause the carousel - // (as if it's the second time we tap on it, mouseenter compat event - // is NOT fired) and after a timeout (to allow for mouse compatibility - // events to fire) we explicitly restart cycling - _this4.pause(); - - if (_this4.touchTimeout) { - clearTimeout(_this4.touchTimeout); - } - - _this4.touchTimeout = setTimeout(function (event) { - return _this4.cycle(event); - }, TOUCHEVENT_COMPAT_WAIT + _this4._config.interval); - } - }; - - SelectorEngine.find(SELECTOR_ITEM_IMG, this._element).forEach(function (itemImg) { - EventHandler.on(itemImg, EVENT_DRAG_START, function (e) { - return e.preventDefault(); - }); - }); - - if (this._pointerEvent) { - EventHandler.on(this._element, EVENT_POINTERDOWN, function (event) { - return start(event); - }); - EventHandler.on(this._element, EVENT_POINTERUP, function (event) { - return end(event); - }); - - this._element.classList.add(CLASS_NAME_POINTER_EVENT); - } else { - EventHandler.on(this._element, EVENT_TOUCHSTART, function (event) { - return start(event); - }); - EventHandler.on(this._element, EVENT_TOUCHMOVE, function (event) { - return move(event); - }); - EventHandler.on(this._element, EVENT_TOUCHEND, function (event) { - return end(event); - }); - } - }; - - _proto._keydown = function _keydown(event) { - if (/input|textarea/i.test(event.target.tagName)) { - return; - } - - switch (event.key) { - case ARROW_LEFT_KEY: - event.preventDefault(); - this.prev(); - break; - - case ARROW_RIGHT_KEY: - event.preventDefault(); - this.next(); - break; - } - }; - - _proto._getItemIndex = function _getItemIndex(element) { - this._items = element && element.parentNode ? SelectorEngine.find(SELECTOR_ITEM, element.parentNode) : []; - return this._items.indexOf(element); - }; - - _proto._getItemByDirection = function _getItemByDirection(direction, activeElement) { - var isNextDirection = direction === DIRECTION_NEXT; - var isPrevDirection = direction === DIRECTION_PREV; - - var activeIndex = this._getItemIndex(activeElement); - - var lastItemIndex = this._items.length - 1; - var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex; - - if (isGoingToWrap && !this._config.wrap) { - return activeElement; - } - - var delta = direction === DIRECTION_PREV ? -1 : 1; - var itemIndex = (activeIndex + delta) % this._items.length; - return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex]; - }; - - _proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) { - var targetIndex = this._getItemIndex(relatedTarget); - - var fromIndex = this._getItemIndex(SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)); - - return EventHandler.trigger(this._element, EVENT_SLIDE, { - relatedTarget: relatedTarget, - direction: eventDirectionName, - from: fromIndex, - to: targetIndex - }); - }; - - _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) { - if (this._indicatorsElement) { - var indicators = SelectorEngine.find(SELECTOR_ACTIVE, this._indicatorsElement); - - for (var i = 0; i < indicators.length; i++) { - indicators[i].classList.remove(CLASS_NAME_ACTIVE$1); - } - - var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)]; - - if (nextIndicator) { - nextIndicator.classList.add(CLASS_NAME_ACTIVE$1); - } - } - }; - - _proto._updateInterval = function _updateInterval() { - var element = this._activeElement || SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element); - - if (!element) { - return; - } - - var elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10); - - if (elementInterval) { - this._config.defaultInterval = this._config.defaultInterval || this._config.interval; - this._config.interval = elementInterval; - } else { - this._config.interval = this._config.defaultInterval || this._config.interval; - } - }; - - _proto._slide = function _slide(direction, element) { - var _this5 = this; - - var activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element); - - var activeElementIndex = this._getItemIndex(activeElement); - - var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement); - - var nextElementIndex = this._getItemIndex(nextElement); - - var isCycling = Boolean(this._interval); - var directionalClassName; - var orderClassName; - var eventDirectionName; - - if (direction === DIRECTION_NEXT) { - directionalClassName = CLASS_NAME_START; - orderClassName = CLASS_NAME_NEXT; - eventDirectionName = DIRECTION_LEFT; - } else { - directionalClassName = CLASS_NAME_END; - orderClassName = CLASS_NAME_PREV; - eventDirectionName = DIRECTION_RIGHT; - } - - if (nextElement && nextElement.classList.contains(CLASS_NAME_ACTIVE$1)) { - this._isSliding = false; - return; - } - - var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName); - - if (slideEvent.defaultPrevented) { - return; - } - - if (!activeElement || !nextElement) { - // Some weirdness is happening, so we bail - return; - } - - this._isSliding = true; - - if (isCycling) { - this.pause(); - } - - this._setActiveIndicatorElement(nextElement); - - this._activeElement = nextElement; - - if (this._element.classList.contains(CLASS_NAME_SLIDE)) { - nextElement.classList.add(orderClassName); - reflow(nextElement); - activeElement.classList.add(directionalClassName); - nextElement.classList.add(directionalClassName); - var transitionDuration = getTransitionDurationFromElement(activeElement); - EventHandler.one(activeElement, TRANSITION_END, function () { - nextElement.classList.remove(directionalClassName, orderClassName); - nextElement.classList.add(CLASS_NAME_ACTIVE$1); - activeElement.classList.remove(CLASS_NAME_ACTIVE$1, orderClassName, directionalClassName); - _this5._isSliding = false; - setTimeout(function () { - EventHandler.trigger(_this5._element, EVENT_SLID, { - relatedTarget: nextElement, - direction: eventDirectionName, - from: activeElementIndex, - to: nextElementIndex - }); - }, 0); - }); - emulateTransitionEnd(activeElement, transitionDuration); - } else { - activeElement.classList.remove(CLASS_NAME_ACTIVE$1); - nextElement.classList.add(CLASS_NAME_ACTIVE$1); - this._isSliding = false; - EventHandler.trigger(this._element, EVENT_SLID, { - relatedTarget: nextElement, - direction: eventDirectionName, - from: activeElementIndex, - to: nextElementIndex - }); - } - - if (isCycling) { - this.cycle(); - } - } // Static - ; - - Carousel.carouselInterface = function carouselInterface(element, config) { - var data = Data.getData(element, DATA_KEY$2); - - var _config = _extends({}, Default, Manipulator.getDataAttributes(element)); - - if (typeof config === 'object') { - _config = _extends({}, _config, config); - } - - var action = typeof config === 'string' ? config : _config.slide; - - if (!data) { - data = new Carousel(element, _config); - } - - if (typeof config === 'number') { - data.to(config); - } else if (typeof action === 'string') { - if (typeof data[action] === 'undefined') { - throw new TypeError("No method named \"" + action + "\""); - } - - data[action](); - } else if (_config.interval && _config.ride) { - data.pause(); - data.cycle(); - } - }; - - Carousel.jQueryInterface = function jQueryInterface(config) { - return this.each(function () { - Carousel.carouselInterface(this, config); - }); - }; - - Carousel.dataApiClickHandler = function dataApiClickHandler(event) { - var target = getElementFromSelector(this); - - if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) { - return; - } - - var config = _extends({}, Manipulator.getDataAttributes(target), Manipulator.getDataAttributes(this)); - - var slideIndex = this.getAttribute('data-bs-slide-to'); - - if (slideIndex) { - config.interval = false; - } - - Carousel.carouselInterface(target, config); - - if (slideIndex) { - Data.getData(target, DATA_KEY$2).to(slideIndex); - } - - event.preventDefault(); - }; - - _createClass(Carousel, null, [{ - key: "Default", - get: function get() { - return Default; - } - }, { - key: "DATA_KEY", - get: function get() { - return DATA_KEY$2; - } - }]); - - return Carousel; - }(BaseComponent); - /** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ - - - EventHandler.on(document, EVENT_CLICK_DATA_API$2, SELECTOR_DATA_SLIDE, Carousel.dataApiClickHandler); - EventHandler.on(window, EVENT_LOAD_DATA_API, function () { - var carousels = SelectorEngine.find(SELECTOR_DATA_RIDE); - - for (var i = 0, len = carousels.length; i < len; i++) { - Carousel.carouselInterface(carousels[i], Data.getData(carousels[i], DATA_KEY$2)); - } - }); - /** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - * add .Carousel to jQuery only if jQuery is present - */ - - onDOMContentLoaded(function () { - var $ = getjQuery(); - /* istanbul ignore if */ - - if ($) { - var JQUERY_NO_CONFLICT = $.fn[NAME$2]; - $.fn[NAME$2] = Carousel.jQueryInterface; - $.fn[NAME$2].Constructor = Carousel; - - $.fn[NAME$2].noConflict = function () { - $.fn[NAME$2] = JQUERY_NO_CONFLICT; - return Carousel.jQueryInterface; - }; - } - }); - - /** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - - var NAME$3 = 'collapse'; - var DATA_KEY$3 = 'bs.collapse'; - var EVENT_KEY$3 = "." + DATA_KEY$3; - var DATA_API_KEY$3 = '.data-api'; - var Default$1 = { - toggle: true, - parent: '' - }; - var DefaultType$1 = { - toggle: 'boolean', - parent: '(string|element)' - }; - var EVENT_SHOW = "show" + EVENT_KEY$3; - var EVENT_SHOWN = "shown" + EVENT_KEY$3; - var EVENT_HIDE = "hide" + EVENT_KEY$3; - var EVENT_HIDDEN = "hidden" + EVENT_KEY$3; - var EVENT_CLICK_DATA_API$3 = "click" + EVENT_KEY$3 + DATA_API_KEY$3; - var CLASS_NAME_SHOW = 'show'; - var CLASS_NAME_COLLAPSE = 'collapse'; - var CLASS_NAME_COLLAPSING = 'collapsing'; - var CLASS_NAME_COLLAPSED = 'collapsed'; - var WIDTH = 'width'; - var HEIGHT = 'height'; - var SELECTOR_ACTIVES = '.show, .collapsing'; - var SELECTOR_DATA_TOGGLE$1 = '[data-bs-toggle="collapse"]'; - /** - * ------------------------------------------------------------------------ - * Class Definition - * ------------------------------------------------------------------------ - */ - - var Collapse = /*#__PURE__*/function (_BaseComponent) { - _inheritsLoose(Collapse, _BaseComponent); - - function Collapse(element, config) { - var _this; - - _this = _BaseComponent.call(this, element) || this; - _this._isTransitioning = false; - _this._config = _this._getConfig(config); - _this._triggerArray = SelectorEngine.find(SELECTOR_DATA_TOGGLE$1 + "[href=\"#" + element.id + "\"]," + (SELECTOR_DATA_TOGGLE$1 + "[data-bs-target=\"#" + element.id + "\"]")); - var toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE$1); - - for (var i = 0, len = toggleList.length; i < len; i++) { - var elem = toggleList[i]; - var selector = getSelectorFromElement(elem); - var filterElement = SelectorEngine.find(selector).filter(function (foundElem) { - return foundElem === element; - }); - - if (selector !== null && filterElement.length) { - _this._selector = selector; - - _this._triggerArray.push(elem); - } - } - - _this._parent = _this._config.parent ? _this._getParent() : null; - - if (!_this._config.parent) { - _this._addAriaAndCollapsedClass(_this._element, _this._triggerArray); - } - - if (_this._config.toggle) { - _this.toggle(); - } - - return _this; - } // Getters - - - var _proto = Collapse.prototype; - - // Public - _proto.toggle = function toggle() { - if (this._element.classList.contains(CLASS_NAME_SHOW)) { - this.hide(); - } else { - this.show(); - } - }; - - _proto.show = function show() { - var _this2 = this; - - if (this._isTransitioning || this._element.classList.contains(CLASS_NAME_SHOW)) { - return; - } - - var actives; - var activesData; - - if (this._parent) { - actives = SelectorEngine.find(SELECTOR_ACTIVES, this._parent).filter(function (elem) { - if (typeof _this2._config.parent === 'string') { - return elem.getAttribute('data-bs-parent') === _this2._config.parent; - } - - return elem.classList.contains(CLASS_NAME_COLLAPSE); - }); - - if (actives.length === 0) { - actives = null; - } - } - - var container = SelectorEngine.findOne(this._selector); - - if (actives) { - var tempActiveData = actives.find(function (elem) { - return container !== elem; - }); - activesData = tempActiveData ? Data.getData(tempActiveData, DATA_KEY$3) : null; - - if (activesData && activesData._isTransitioning) { - return; - } - } - - var startEvent = EventHandler.trigger(this._element, EVENT_SHOW); - - if (startEvent.defaultPrevented) { - return; - } - - if (actives) { - actives.forEach(function (elemActive) { - if (container !== elemActive) { - Collapse.collapseInterface(elemActive, 'hide'); - } - - if (!activesData) { - Data.setData(elemActive, DATA_KEY$3, null); - } - }); - } - - var dimension = this._getDimension(); - - this._element.classList.remove(CLASS_NAME_COLLAPSE); - - this._element.classList.add(CLASS_NAME_COLLAPSING); - - this._element.style[dimension] = 0; - - if (this._triggerArray.length) { - this._triggerArray.forEach(function (element) { - element.classList.remove(CLASS_NAME_COLLAPSED); - element.setAttribute('aria-expanded', true); - }); - } - - this.setTransitioning(true); - - var complete = function complete() { - _this2._element.classList.remove(CLASS_NAME_COLLAPSING); - - _this2._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW); - - _this2._element.style[dimension] = ''; - - _this2.setTransitioning(false); - - EventHandler.trigger(_this2._element, EVENT_SHOWN); - }; - - var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1); - var scrollSize = "scroll" + capitalizedDimension; - var transitionDuration = getTransitionDurationFromElement(this._element); - EventHandler.one(this._element, TRANSITION_END, complete); - emulateTransitionEnd(this._element, transitionDuration); - this._element.style[dimension] = this._element[scrollSize] + "px"; - }; - - _proto.hide = function hide() { - var _this3 = this; - - if (this._isTransitioning || !this._element.classList.contains(CLASS_NAME_SHOW)) { - return; - } - - var startEvent = EventHandler.trigger(this._element, EVENT_HIDE); - - if (startEvent.defaultPrevented) { - return; - } - - var dimension = this._getDimension(); - - this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + "px"; - reflow(this._element); - - this._element.classList.add(CLASS_NAME_COLLAPSING); - - this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW); - - var triggerArrayLength = this._triggerArray.length; - - if (triggerArrayLength > 0) { - for (var i = 0; i < triggerArrayLength; i++) { - var trigger = this._triggerArray[i]; - var elem = getElementFromSelector(trigger); - - if (elem && !elem.classList.contains(CLASS_NAME_SHOW)) { - trigger.classList.add(CLASS_NAME_COLLAPSED); - trigger.setAttribute('aria-expanded', false); - } - } - } - - this.setTransitioning(true); - - var complete = function complete() { - _this3.setTransitioning(false); - - _this3._element.classList.remove(CLASS_NAME_COLLAPSING); - - _this3._element.classList.add(CLASS_NAME_COLLAPSE); - - EventHandler.trigger(_this3._element, EVENT_HIDDEN); - }; - - this._element.style[dimension] = ''; - var transitionDuration = getTransitionDurationFromElement(this._element); - EventHandler.one(this._element, TRANSITION_END, complete); - emulateTransitionEnd(this._element, transitionDuration); - }; - - _proto.setTransitioning = function setTransitioning(isTransitioning) { - this._isTransitioning = isTransitioning; - }; - - _proto.dispose = function dispose() { - _BaseComponent.prototype.dispose.call(this); - - this._config = null; - this._parent = null; - this._triggerArray = null; - this._isTransitioning = null; - } // Private - ; - - _proto._getConfig = function _getConfig(config) { - config = _extends({}, Default$1, config); - config.toggle = Boolean(config.toggle); // Coerce string values - - typeCheckConfig(NAME$3, config, DefaultType$1); - return config; - }; - - _proto._getDimension = function _getDimension() { - return this._element.classList.contains(WIDTH) ? WIDTH : HEIGHT; - }; - - _proto._getParent = function _getParent() { - var _this4 = this; - - var parent = this._config.parent; - - if (isElement(parent)) { - // it's a jQuery object - if (typeof parent.jquery !== 'undefined' || typeof parent[0] !== 'undefined') { - parent = parent[0]; - } - } else { - parent = SelectorEngine.findOne(parent); - } - - var selector = SELECTOR_DATA_TOGGLE$1 + "[data-bs-parent=\"" + parent + "\"]"; - SelectorEngine.find(selector, parent).forEach(function (element) { - var selected = getElementFromSelector(element); - - _this4._addAriaAndCollapsedClass(selected, [element]); - }); - return parent; - }; - - _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) { - if (!element || !triggerArray.length) { - return; - } - - var isOpen = element.classList.contains(CLASS_NAME_SHOW); - triggerArray.forEach(function (elem) { - if (isOpen) { - elem.classList.remove(CLASS_NAME_COLLAPSED); - } else { - elem.classList.add(CLASS_NAME_COLLAPSED); - } - - elem.setAttribute('aria-expanded', isOpen); - }); - } // Static - ; - - Collapse.collapseInterface = function collapseInterface(element, config) { - var data = Data.getData(element, DATA_KEY$3); - - var _config = _extends({}, Default$1, Manipulator.getDataAttributes(element), typeof config === 'object' && config ? config : {}); - - if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) { - _config.toggle = false; - } - - if (!data) { - data = new Collapse(element, _config); - } - - if (typeof config === 'string') { - if (typeof data[config] === 'undefined') { - throw new TypeError("No method named \"" + config + "\""); - } - - data[config](); - } - }; - - Collapse.jQueryInterface = function jQueryInterface(config) { - return this.each(function () { - Collapse.collapseInterface(this, config); - }); - }; - - _createClass(Collapse, null, [{ - key: "Default", - get: function get() { - return Default$1; - } - }, { - key: "DATA_KEY", - get: function get() { - return DATA_KEY$3; - } - }]); - - return Collapse; - }(BaseComponent); - /** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ - - - EventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$1, function (event) { - // preventDefault only for elements (which change the URL) not inside the collapsible element - if (event.target.tagName === 'A') { - event.preventDefault(); - } - - var triggerData = Manipulator.getDataAttributes(this); - var selector = getSelectorFromElement(this); - var selectorElements = SelectorEngine.find(selector); - selectorElements.forEach(function (element) { - var data = Data.getData(element, DATA_KEY$3); - var config; - - if (data) { - // update parent attribute - if (data._parent === null && typeof triggerData.parent === 'string') { - data._config.parent = triggerData.parent; - data._parent = data._getParent(); - } - - config = 'toggle'; - } else { - config = triggerData; - } - - Collapse.collapseInterface(element, config); - }); - }); - /** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - * add .Collapse to jQuery only if jQuery is present - */ - - onDOMContentLoaded(function () { - var $ = getjQuery(); - /* istanbul ignore if */ - - if ($) { - var JQUERY_NO_CONFLICT = $.fn[NAME$3]; - $.fn[NAME$3] = Collapse.jQueryInterface; - $.fn[NAME$3].Constructor = Collapse; - - $.fn[NAME$3].noConflict = function () { - $.fn[NAME$3] = JQUERY_NO_CONFLICT; - return Collapse.jQueryInterface; - }; - } - }); - - var top = 'top'; - var bottom = 'bottom'; - var right = 'right'; - var left = 'left'; - var auto = 'auto'; - var basePlacements = [top, bottom, right, left]; - var start = 'start'; - var end = 'end'; - var clippingParents = 'clippingParents'; - var viewport = 'viewport'; - var popper = 'popper'; - var reference = 'reference'; - var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) { - return acc.concat([placement + "-" + start, placement + "-" + end]); - }, []); - var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) { - return acc.concat([placement, placement + "-" + start, placement + "-" + end]); - }, []); // modifiers that need to read the DOM - - var beforeRead = 'beforeRead'; - var read = 'read'; - var afterRead = 'afterRead'; // pure-logic modifiers - - var beforeMain = 'beforeMain'; - var main = 'main'; - var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state) - - var beforeWrite = 'beforeWrite'; - var write = 'write'; - var afterWrite = 'afterWrite'; - var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite]; - - function getNodeName(element) { - return element ? (element.nodeName || '').toLowerCase() : null; - } - - /*:: import type { Window } from '../types'; */ - - /*:: declare function getWindow(node: Node | Window): Window; */ - function getWindow(node) { - if (node.toString() !== '[object Window]') { - var ownerDocument = node.ownerDocument; - return ownerDocument ? ownerDocument.defaultView || window : window; - } - - return node; - } - - /*:: declare function isElement(node: mixed): boolean %checks(node instanceof - Element); */ - - function isElement$1(node) { - var OwnElement = getWindow(node).Element; - return node instanceof OwnElement || node instanceof Element; - } - /*:: declare function isHTMLElement(node: mixed): boolean %checks(node instanceof - HTMLElement); */ - - - function isHTMLElement(node) { - var OwnElement = getWindow(node).HTMLElement; - return node instanceof OwnElement || node instanceof HTMLElement; - } - /*:: declare function isShadowRoot(node: mixed): boolean %checks(node instanceof - ShadowRoot); */ - - - function isShadowRoot(node) { - var OwnElement = getWindow(node).ShadowRoot; - return node instanceof OwnElement || node instanceof ShadowRoot; - } - - // and applies them to the HTMLElements such as popper and arrow - - function applyStyles(_ref) { - var state = _ref.state; - Object.keys(state.elements).forEach(function (name) { - var style = state.styles[name] || {}; - var attributes = state.attributes[name] || {}; - var element = state.elements[name]; // arrow is optional + virtual elements - - if (!isHTMLElement(element) || !getNodeName(element)) { - return; - } // Flow doesn't support to extend this property, but it's the most - // effective way to apply styles to an HTMLElement - // $FlowFixMe - - - Object.assign(element.style, style); - Object.keys(attributes).forEach(function (name) { - var value = attributes[name]; - - if (value === false) { - element.removeAttribute(name); - } else { - element.setAttribute(name, value === true ? '' : value); - } - }); - }); - } - - function effect(_ref2) { - var state = _ref2.state; - var initialStyles = { - popper: { - position: state.options.strategy, - left: '0', - top: '0', - margin: '0' - }, - arrow: { - position: 'absolute' - }, - reference: {} - }; - Object.assign(state.elements.popper.style, initialStyles.popper); - - if (state.elements.arrow) { - Object.assign(state.elements.arrow.style, initialStyles.arrow); - } - - return function () { - Object.keys(state.elements).forEach(function (name) { - var element = state.elements[name]; - var attributes = state.attributes[name] || {}; - var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them - - var style = styleProperties.reduce(function (style, property) { - style[property] = ''; - return style; - }, {}); // arrow is optional + virtual elements - - if (!isHTMLElement(element) || !getNodeName(element)) { - return; - } // Flow doesn't support to extend this property, but it's the most - // effective way to apply styles to an HTMLElement - // $FlowFixMe - - - Object.assign(element.style, style); - Object.keys(attributes).forEach(function (attribute) { - element.removeAttribute(attribute); - }); - }); - }; - } // eslint-disable-next-line import/no-unused-modules - - - var applyStyles$1 = { - name: 'applyStyles', - enabled: true, - phase: 'write', - fn: applyStyles, - effect: effect, - requires: ['computeStyles'] - }; - - function getBasePlacement(placement) { - return placement.split('-')[0]; - } - - // Returns the layout rect of an element relative to its offsetParent. Layout - // means it doesn't take into account transforms. - function getLayoutRect(element) { - return { - x: element.offsetLeft, - y: element.offsetTop, - width: element.offsetWidth, - height: element.offsetHeight - }; - } - - function contains(parent, child) { - var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method - - if (parent.contains(child)) { - return true; - } // then fallback to custom implementation with Shadow DOM support - else if (rootNode && isShadowRoot(rootNode)) { - var next = child; - - do { - if (next && parent.isSameNode(next)) { - return true; - } // $FlowFixMe: need a better way to handle this... - - - next = next.parentNode || next.host; - } while (next); - } // Give up, the result is false - - - return false; - } - - function getComputedStyle$1(element) { - return getWindow(element).getComputedStyle(element); - } - - function isTableElement(element) { - return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0; - } - - function getDocumentElement(element) { - // $FlowFixMe: assume body is always available - return ((isElement$1(element) ? element.ownerDocument : element.document) || window.document).documentElement; - } - - function getParentNode(element) { - if (getNodeName(element) === 'html') { - return element; - } - - return (// $FlowFixMe: this is a quicker (but less type safe) way to save quite some bytes from the bundle - element.assignedSlot || // step into the shadow DOM of the parent of a slotted node - element.parentNode || // DOM Element detected - // $FlowFixMe: need a better way to handle this... - element.host || // ShadowRoot detected - // $FlowFixMe: HTMLElement is a Node - getDocumentElement(element) // fallback - - ); - } - - function getTrueOffsetParent(element) { - if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837 - getComputedStyle$1(element).position === 'fixed') { - return null; - } - - var offsetParent = element.offsetParent; - - if (offsetParent) { - var html = getDocumentElement(offsetParent); - - if (getNodeName(offsetParent) === 'body' && getComputedStyle$1(offsetParent).position === 'static' && getComputedStyle$1(html).position !== 'static') { - return html; - } - } - - return offsetParent; - } // `.offsetParent` reports `null` for fixed elements, while absolute elements - // return the containing block - - - function getContainingBlock(element) { - var currentNode = getParentNode(element); - - while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) { - var css = getComputedStyle$1(currentNode); // This is non-exhaustive but covers the most common CSS properties that - // create a containing block. - - if (css.transform !== 'none' || css.perspective !== 'none' || css.willChange && css.willChange !== 'auto') { - return currentNode; - } else { - currentNode = currentNode.parentNode; - } - } - - return null; - } // Gets the closest ancestor positioned element. Handles some edge cases, - // such as table ancestors and cross browser bugs. - - - function getOffsetParent(element) { - var window = getWindow(element); - var offsetParent = getTrueOffsetParent(element); - - while (offsetParent && isTableElement(offsetParent) && getComputedStyle$1(offsetParent).position === 'static') { - offsetParent = getTrueOffsetParent(offsetParent); - } - - if (offsetParent && getNodeName(offsetParent) === 'body' && getComputedStyle$1(offsetParent).position === 'static') { - return window; - } - - return offsetParent || getContainingBlock(element) || window; - } - - function getMainAxisFromPlacement(placement) { - return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y'; - } - - function within(min, value, max) { - return Math.max(min, Math.min(value, max)); - } - - function getFreshSideObject() { - return { - top: 0, - right: 0, - bottom: 0, - left: 0 - }; - } - - function mergePaddingObject(paddingObject) { - return Object.assign(Object.assign({}, getFreshSideObject()), paddingObject); - } - - function expandToHashMap(value, keys) { - return keys.reduce(function (hashMap, key) { - hashMap[key] = value; - return hashMap; - }, {}); - } - - function arrow(_ref) { - var _state$modifiersData$; - - var state = _ref.state, - name = _ref.name; - var arrowElement = state.elements.arrow; - var popperOffsets = state.modifiersData.popperOffsets; - var basePlacement = getBasePlacement(state.placement); - var axis = getMainAxisFromPlacement(basePlacement); - var isVertical = [left, right].indexOf(basePlacement) >= 0; - var len = isVertical ? 'height' : 'width'; - - if (!arrowElement || !popperOffsets) { - return; - } - - var paddingObject = state.modifiersData[name + "#persistent"].padding; - var arrowRect = getLayoutRect(arrowElement); - var minProp = axis === 'y' ? top : left; - var maxProp = axis === 'y' ? bottom : right; - var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len]; - var startDiff = popperOffsets[axis] - state.rects.reference[axis]; - var arrowOffsetParent = getOffsetParent(arrowElement); - var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0; - var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is - // outside of the popper bounds - - var min = paddingObject[minProp]; - var max = clientSize - arrowRect[len] - paddingObject[maxProp]; - var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference; - var offset = within(min, center, max); // Prevents breaking syntax highlighting... - - var axisProp = axis; - state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$); - } - - function effect$1(_ref2) { - var state = _ref2.state, - options = _ref2.options, - name = _ref2.name; - var _options$element = options.element, - arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element, - _options$padding = options.padding, - padding = _options$padding === void 0 ? 0 : _options$padding; - - if (arrowElement == null) { - return; - } // CSS selector - - - if (typeof arrowElement === 'string') { - arrowElement = state.elements.popper.querySelector(arrowElement); - - if (!arrowElement) { - return; - } - } - - if (!contains(state.elements.popper, arrowElement)) { - - return; - } - - state.elements.arrow = arrowElement; - state.modifiersData[name + "#persistent"] = { - padding: mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements)) - }; - } // eslint-disable-next-line import/no-unused-modules - - - var arrow$1 = { - name: 'arrow', - enabled: true, - phase: 'main', - fn: arrow, - effect: effect$1, - requires: ['popperOffsets'], - requiresIfExists: ['preventOverflow'] - }; - - var unsetSides = { - top: 'auto', - right: 'auto', - bottom: 'auto', - left: 'auto' - }; // Round the offsets to the nearest suitable subpixel based on the DPR. - // Zooming can change the DPR, but it seems to report a value that will - // cleanly divide the values into the appropriate subpixels. - - function roundOffsets(_ref) { - var x = _ref.x, - y = _ref.y; - var win = window; - var dpr = win.devicePixelRatio || 1; - return { - x: Math.round(x * dpr) / dpr || 0, - y: Math.round(y * dpr) / dpr || 0 - }; - } - - function mapToStyles(_ref2) { - var _Object$assign2; - - var popper = _ref2.popper, - popperRect = _ref2.popperRect, - placement = _ref2.placement, - offsets = _ref2.offsets, - position = _ref2.position, - gpuAcceleration = _ref2.gpuAcceleration, - adaptive = _ref2.adaptive; - - var _roundOffsets = roundOffsets(offsets), - x = _roundOffsets.x, - y = _roundOffsets.y; - - var hasX = offsets.hasOwnProperty('x'); - var hasY = offsets.hasOwnProperty('y'); - var sideX = left; - var sideY = top; - var win = window; - - if (adaptive) { - var offsetParent = getOffsetParent(popper); - - if (offsetParent === getWindow(popper)) { - offsetParent = getDocumentElement(popper); - } // $FlowFixMe: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it - - /*:: offsetParent = (offsetParent: Element); */ - - - if (placement === top) { - sideY = bottom; - y -= offsetParent.clientHeight - popperRect.height; - y *= gpuAcceleration ? 1 : -1; - } - - if (placement === left) { - sideX = right; - x -= offsetParent.clientWidth - popperRect.width; - x *= gpuAcceleration ? 1 : -1; - } - } - - var commonStyles = Object.assign({ - position: position - }, adaptive && unsetSides); - - if (gpuAcceleration) { - var _Object$assign; - - return Object.assign(Object.assign({}, commonStyles), {}, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) < 2 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)", _Object$assign)); - } - - return Object.assign(Object.assign({}, commonStyles), {}, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : '', _Object$assign2[sideX] = hasX ? x + "px" : '', _Object$assign2.transform = '', _Object$assign2)); - } - - function computeStyles(_ref3) { - var state = _ref3.state, - options = _ref3.options; - var _options$gpuAccelerat = options.gpuAcceleration, - gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat, - _options$adaptive = options.adaptive, - adaptive = _options$adaptive === void 0 ? true : _options$adaptive; - - var commonStyles = { - placement: getBasePlacement(state.placement), - popper: state.elements.popper, - popperRect: state.rects.popper, - gpuAcceleration: gpuAcceleration - }; - - if (state.modifiersData.popperOffsets != null) { - state.styles.popper = Object.assign(Object.assign({}, state.styles.popper), mapToStyles(Object.assign(Object.assign({}, commonStyles), {}, { - offsets: state.modifiersData.popperOffsets, - position: state.options.strategy, - adaptive: adaptive - }))); - } - - if (state.modifiersData.arrow != null) { - state.styles.arrow = Object.assign(Object.assign({}, state.styles.arrow), mapToStyles(Object.assign(Object.assign({}, commonStyles), {}, { - offsets: state.modifiersData.arrow, - position: 'absolute', - adaptive: false - }))); - } - - state.attributes.popper = Object.assign(Object.assign({}, state.attributes.popper), {}, { - 'data-popper-placement': state.placement - }); - } // eslint-disable-next-line import/no-unused-modules - - - var computeStyles$1 = { - name: 'computeStyles', - enabled: true, - phase: 'beforeWrite', - fn: computeStyles, - data: {} - }; - - var passive = { - passive: true - }; - - function effect$2(_ref) { - var state = _ref.state, - instance = _ref.instance, - options = _ref.options; - var _options$scroll = options.scroll, - scroll = _options$scroll === void 0 ? true : _options$scroll, - _options$resize = options.resize, - resize = _options$resize === void 0 ? true : _options$resize; - var window = getWindow(state.elements.popper); - var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper); - - if (scroll) { - scrollParents.forEach(function (scrollParent) { - scrollParent.addEventListener('scroll', instance.update, passive); - }); - } - - if (resize) { - window.addEventListener('resize', instance.update, passive); - } - - return function () { - if (scroll) { - scrollParents.forEach(function (scrollParent) { - scrollParent.removeEventListener('scroll', instance.update, passive); - }); - } - - if (resize) { - window.removeEventListener('resize', instance.update, passive); - } - }; - } // eslint-disable-next-line import/no-unused-modules - - - var eventListeners = { - name: 'eventListeners', - enabled: true, - phase: 'write', - fn: function fn() {}, - effect: effect$2, - data: {} - }; - - var hash = { - left: 'right', - right: 'left', - bottom: 'top', - top: 'bottom' - }; - function getOppositePlacement(placement) { - return placement.replace(/left|right|bottom|top/g, function (matched) { - return hash[matched]; - }); - } - - var hash$1 = { - start: 'end', - end: 'start' - }; - function getOppositeVariationPlacement(placement) { - return placement.replace(/start|end/g, function (matched) { - return hash$1[matched]; - }); - } - - function getBoundingClientRect(element) { - var rect = element.getBoundingClientRect(); - return { - width: rect.width, - height: rect.height, - top: rect.top, - right: rect.right, - bottom: rect.bottom, - left: rect.left, - x: rect.left, - y: rect.top - }; - } - - function getWindowScroll(node) { - var win = getWindow(node); - var scrollLeft = win.pageXOffset; - var scrollTop = win.pageYOffset; - return { - scrollLeft: scrollLeft, - scrollTop: scrollTop - }; - } - - function getWindowScrollBarX(element) { - // If has a CSS width greater than the viewport, then this will be - // incorrect for RTL. - // Popper 1 is broken in this case and never had a bug report so let's assume - // it's not an issue. I don't think anyone ever specifies width on - // anyway. - // Browsers where the left scrollbar doesn't cause an issue report `0` for - // this (e.g. Edge 2019, IE11, Safari) - return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft; - } - - function getViewportRect(element) { - var win = getWindow(element); - var html = getDocumentElement(element); - var visualViewport = win.visualViewport; - var width = html.clientWidth; - var height = html.clientHeight; - var x = 0; - var y = 0; // NB: This isn't supported on iOS <= 12. If the keyboard is open, the popper - // can be obscured underneath it. - // Also, `html.clientHeight` adds the bottom bar height in Safari iOS, even - // if it isn't open, so if this isn't available, the popper will be detected - // to overflow the bottom of the screen too early. - - if (visualViewport) { - width = visualViewport.width; - height = visualViewport.height; // Uses Layout Viewport (like Chrome; Safari does not currently) - // In Chrome, it returns a value very close to 0 (+/-) but contains rounding - // errors due to floating point numbers, so we need to check precision. - // Safari returns a number <= 0, usually < -1 when pinch-zoomed - // Feature detection fails in mobile emulation mode in Chrome. - // Math.abs(win.innerWidth / visualViewport.scale - visualViewport.width) < - // 0.001 - // Fallback here: "Not Safari" userAgent - - if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) { - x = visualViewport.offsetLeft; - y = visualViewport.offsetTop; - } - } - - return { - width: width, - height: height, - x: x + getWindowScrollBarX(element), - y: y - }; - } - - // of the `` and `` rect bounds if horizontally scrollable - - function getDocumentRect(element) { - var html = getDocumentElement(element); - var winScroll = getWindowScroll(element); - var body = element.ownerDocument.body; - var width = Math.max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0); - var height = Math.max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0); - var x = -winScroll.scrollLeft + getWindowScrollBarX(element); - var y = -winScroll.scrollTop; - - if (getComputedStyle$1(body || html).direction === 'rtl') { - x += Math.max(html.clientWidth, body ? body.clientWidth : 0) - width; - } - - return { - width: width, - height: height, - x: x, - y: y - }; - } - - function isScrollParent(element) { - // Firefox wants us to check `-x` and `-y` variations as well - var _getComputedStyle = getComputedStyle$1(element), - overflow = _getComputedStyle.overflow, - overflowX = _getComputedStyle.overflowX, - overflowY = _getComputedStyle.overflowY; - - return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX); - } - - function getScrollParent(node) { - if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) { - // $FlowFixMe: assume body is always available - return node.ownerDocument.body; - } - - if (isHTMLElement(node) && isScrollParent(node)) { - return node; - } - - return getScrollParent(getParentNode(node)); - } - - /* - given a DOM element, return the list of all scroll parents, up the list of ancesors - until we get to the top window object. This list is what we attach scroll listeners - to, because if any of these parent elements scroll, we'll need to re-calculate the - reference element's position. - */ - - function listScrollParents(element, list) { - if (list === void 0) { - list = []; - } - - var scrollParent = getScrollParent(element); - var isBody = getNodeName(scrollParent) === 'body'; - var win = getWindow(scrollParent); - var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent; - var updatedList = list.concat(target); - return isBody ? updatedList : // $FlowFixMe: isBody tells us target will be an HTMLElement here - updatedList.concat(listScrollParents(getParentNode(target))); - } - - function rectToClientRect(rect) { - return Object.assign(Object.assign({}, rect), {}, { - left: rect.x, - top: rect.y, - right: rect.x + rect.width, - bottom: rect.y + rect.height - }); - } - - function getInnerBoundingClientRect(element) { - var rect = getBoundingClientRect(element); - rect.top = rect.top + element.clientTop; - rect.left = rect.left + element.clientLeft; - rect.bottom = rect.top + element.clientHeight; - rect.right = rect.left + element.clientWidth; - rect.width = element.clientWidth; - rect.height = element.clientHeight; - rect.x = rect.left; - rect.y = rect.top; - return rect; - } - - function getClientRectFromMixedType(element, clippingParent) { - return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isHTMLElement(clippingParent) ? getInnerBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element))); - } // A "clipping parent" is an overflowable container with the characteristic of - // clipping (or hiding) overflowing elements with a position different from - // `initial` - - - function getClippingParents(element) { - var clippingParents = listScrollParents(getParentNode(element)); - var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle$1(element).position) >= 0; - var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element; - - if (!isElement$1(clipperElement)) { - return []; - } // $FlowFixMe: https://github.com/facebook/flow/issues/1414 - - - return clippingParents.filter(function (clippingParent) { - return isElement$1(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body'; - }); - } // Gets the maximum area that the element is visible in due to any number of - // clipping parents - - - function getClippingRect(element, boundary, rootBoundary) { - var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary); - var clippingParents = [].concat(mainClippingParents, [rootBoundary]); - var firstClippingParent = clippingParents[0]; - var clippingRect = clippingParents.reduce(function (accRect, clippingParent) { - var rect = getClientRectFromMixedType(element, clippingParent); - accRect.top = Math.max(rect.top, accRect.top); - accRect.right = Math.min(rect.right, accRect.right); - accRect.bottom = Math.min(rect.bottom, accRect.bottom); - accRect.left = Math.max(rect.left, accRect.left); - return accRect; - }, getClientRectFromMixedType(element, firstClippingParent)); - clippingRect.width = clippingRect.right - clippingRect.left; - clippingRect.height = clippingRect.bottom - clippingRect.top; - clippingRect.x = clippingRect.left; - clippingRect.y = clippingRect.top; - return clippingRect; - } - - function getVariation(placement) { - return placement.split('-')[1]; - } - - function computeOffsets(_ref) { - var reference = _ref.reference, - element = _ref.element, - placement = _ref.placement; - var basePlacement = placement ? getBasePlacement(placement) : null; - var variation = placement ? getVariation(placement) : null; - var commonX = reference.x + reference.width / 2 - element.width / 2; - var commonY = reference.y + reference.height / 2 - element.height / 2; - var offsets; - - switch (basePlacement) { - case top: - offsets = { - x: commonX, - y: reference.y - element.height - }; - break; - - case bottom: - offsets = { - x: commonX, - y: reference.y + reference.height - }; - break; - - case right: - offsets = { - x: reference.x + reference.width, - y: commonY - }; - break; - - case left: - offsets = { - x: reference.x - element.width, - y: commonY - }; - break; - - default: - offsets = { - x: reference.x, - y: reference.y - }; - } - - var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null; - - if (mainAxis != null) { - var len = mainAxis === 'y' ? 'height' : 'width'; - - switch (variation) { - case start: - offsets[mainAxis] = Math.floor(offsets[mainAxis]) - Math.floor(reference[len] / 2 - element[len] / 2); - break; - - case end: - offsets[mainAxis] = Math.floor(offsets[mainAxis]) + Math.ceil(reference[len] / 2 - element[len] / 2); - break; - } - } - - return offsets; - } - - function detectOverflow(state, options) { - if (options === void 0) { - options = {}; - } - - var _options = options, - _options$placement = _options.placement, - placement = _options$placement === void 0 ? state.placement : _options$placement, - _options$boundary = _options.boundary, - boundary = _options$boundary === void 0 ? clippingParents : _options$boundary, - _options$rootBoundary = _options.rootBoundary, - rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary, - _options$elementConte = _options.elementContext, - elementContext = _options$elementConte === void 0 ? popper : _options$elementConte, - _options$altBoundary = _options.altBoundary, - altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary, - _options$padding = _options.padding, - padding = _options$padding === void 0 ? 0 : _options$padding; - var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements)); - var altContext = elementContext === popper ? reference : popper; - var referenceElement = state.elements.reference; - var popperRect = state.rects.popper; - var element = state.elements[altBoundary ? altContext : elementContext]; - var clippingClientRect = getClippingRect(isElement$1(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary); - var referenceClientRect = getBoundingClientRect(referenceElement); - var popperOffsets = computeOffsets({ - reference: referenceClientRect, - element: popperRect, - strategy: 'absolute', - placement: placement - }); - var popperClientRect = rectToClientRect(Object.assign(Object.assign({}, popperRect), popperOffsets)); - var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect - // 0 or negative = within the clipping rect - - var overflowOffsets = { - top: clippingClientRect.top - elementClientRect.top + paddingObject.top, - bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom, - left: clippingClientRect.left - elementClientRect.left + paddingObject.left, - right: elementClientRect.right - clippingClientRect.right + paddingObject.right - }; - var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element - - if (elementContext === popper && offsetData) { - var offset = offsetData[placement]; - Object.keys(overflowOffsets).forEach(function (key) { - var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1; - var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x'; - overflowOffsets[key] += offset[axis] * multiply; - }); - } - - return overflowOffsets; - } - - /*:: type OverflowsMap = { [ComputedPlacement]: number }; */ - - /*;; type OverflowsMap = { [key in ComputedPlacement]: number }; */ - function computeAutoPlacement(state, options) { - if (options === void 0) { - options = {}; - } - - var _options = options, - placement = _options.placement, - boundary = _options.boundary, - rootBoundary = _options.rootBoundary, - padding = _options.padding, - flipVariations = _options.flipVariations, - _options$allowedAutoP = _options.allowedAutoPlacements, - allowedAutoPlacements = _options$allowedAutoP === void 0 ? placements : _options$allowedAutoP; - var variation = getVariation(placement); - var placements$1 = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) { - return getVariation(placement) === variation; - }) : basePlacements; // $FlowFixMe - - var allowedPlacements = placements$1.filter(function (placement) { - return allowedAutoPlacements.indexOf(placement) >= 0; - }); - - if (allowedPlacements.length === 0) { - allowedPlacements = placements$1; - } // $FlowFixMe: Flow seems to have problems with two array unions... - - - var overflows = allowedPlacements.reduce(function (acc, placement) { - acc[placement] = detectOverflow(state, { - placement: placement, - boundary: boundary, - rootBoundary: rootBoundary, - padding: padding - })[getBasePlacement(placement)]; - return acc; - }, {}); - return Object.keys(overflows).sort(function (a, b) { - return overflows[a] - overflows[b]; - }); - } - - function getExpandedFallbackPlacements(placement) { - if (getBasePlacement(placement) === auto) { - return []; - } - - var oppositePlacement = getOppositePlacement(placement); - return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)]; - } - - function flip(_ref) { - var state = _ref.state, - options = _ref.options, - name = _ref.name; - - if (state.modifiersData[name]._skip) { - return; - } - - var _options$mainAxis = options.mainAxis, - checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, - _options$altAxis = options.altAxis, - checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis, - specifiedFallbackPlacements = options.fallbackPlacements, - padding = options.padding, - boundary = options.boundary, - rootBoundary = options.rootBoundary, - altBoundary = options.altBoundary, - _options$flipVariatio = options.flipVariations, - flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio, - allowedAutoPlacements = options.allowedAutoPlacements; - var preferredPlacement = state.options.placement; - var basePlacement = getBasePlacement(preferredPlacement); - var isBasePlacement = basePlacement === preferredPlacement; - var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement)); - var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) { - return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, { - placement: placement, - boundary: boundary, - rootBoundary: rootBoundary, - padding: padding, - flipVariations: flipVariations, - allowedAutoPlacements: allowedAutoPlacements - }) : placement); - }, []); - var referenceRect = state.rects.reference; - var popperRect = state.rects.popper; - var checksMap = new Map(); - var makeFallbackChecks = true; - var firstFittingPlacement = placements[0]; - - for (var i = 0; i < placements.length; i++) { - var placement = placements[i]; - - var _basePlacement = getBasePlacement(placement); - - var isStartVariation = getVariation(placement) === start; - var isVertical = [top, bottom].indexOf(_basePlacement) >= 0; - var len = isVertical ? 'width' : 'height'; - var overflow = detectOverflow(state, { - placement: placement, - boundary: boundary, - rootBoundary: rootBoundary, - altBoundary: altBoundary, - padding: padding - }); - var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top; - - if (referenceRect[len] > popperRect[len]) { - mainVariationSide = getOppositePlacement(mainVariationSide); - } - - var altVariationSide = getOppositePlacement(mainVariationSide); - var checks = []; - - if (checkMainAxis) { - checks.push(overflow[_basePlacement] <= 0); - } - - if (checkAltAxis) { - checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0); - } - - if (checks.every(function (check) { - return check; - })) { - firstFittingPlacement = placement; - makeFallbackChecks = false; - break; - } - - checksMap.set(placement, checks); - } - - if (makeFallbackChecks) { - // `2` may be desired in some cases – research later - var numberOfChecks = flipVariations ? 3 : 1; - - var _loop = function _loop(_i) { - var fittingPlacement = placements.find(function (placement) { - var checks = checksMap.get(placement); - - if (checks) { - return checks.slice(0, _i).every(function (check) { - return check; - }); - } - }); - - if (fittingPlacement) { - firstFittingPlacement = fittingPlacement; - return "break"; - } - }; - - for (var _i = numberOfChecks; _i > 0; _i--) { - var _ret = _loop(_i); - - if (_ret === "break") break; - } - } - - if (state.placement !== firstFittingPlacement) { - state.modifiersData[name]._skip = true; - state.placement = firstFittingPlacement; - state.reset = true; - } - } // eslint-disable-next-line import/no-unused-modules - - - var flip$1 = { - name: 'flip', - enabled: true, - phase: 'main', - fn: flip, - requiresIfExists: ['offset'], - data: { - _skip: false - } - }; - - function getSideOffsets(overflow, rect, preventedOffsets) { - if (preventedOffsets === void 0) { - preventedOffsets = { - x: 0, - y: 0 - }; - } - - return { - top: overflow.top - rect.height - preventedOffsets.y, - right: overflow.right - rect.width + preventedOffsets.x, - bottom: overflow.bottom - rect.height + preventedOffsets.y, - left: overflow.left - rect.width - preventedOffsets.x - }; - } - - function isAnySideFullyClipped(overflow) { - return [top, right, bottom, left].some(function (side) { - return overflow[side] >= 0; - }); - } - - function hide(_ref) { - var state = _ref.state, - name = _ref.name; - var referenceRect = state.rects.reference; - var popperRect = state.rects.popper; - var preventedOffsets = state.modifiersData.preventOverflow; - var referenceOverflow = detectOverflow(state, { - elementContext: 'reference' - }); - var popperAltOverflow = detectOverflow(state, { - altBoundary: true - }); - var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect); - var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets); - var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets); - var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets); - state.modifiersData[name] = { - referenceClippingOffsets: referenceClippingOffsets, - popperEscapeOffsets: popperEscapeOffsets, - isReferenceHidden: isReferenceHidden, - hasPopperEscaped: hasPopperEscaped - }; - state.attributes.popper = Object.assign(Object.assign({}, state.attributes.popper), {}, { - 'data-popper-reference-hidden': isReferenceHidden, - 'data-popper-escaped': hasPopperEscaped - }); - } // eslint-disable-next-line import/no-unused-modules - - - var hide$1 = { - name: 'hide', - enabled: true, - phase: 'main', - requiresIfExists: ['preventOverflow'], - fn: hide - }; - - function distanceAndSkiddingToXY(placement, rects, offset) { - var basePlacement = getBasePlacement(placement); - var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1; - - var _ref = typeof offset === 'function' ? offset(Object.assign(Object.assign({}, rects), {}, { - placement: placement - })) : offset, - skidding = _ref[0], - distance = _ref[1]; - - skidding = skidding || 0; - distance = (distance || 0) * invertDistance; - return [left, right].indexOf(basePlacement) >= 0 ? { - x: distance, - y: skidding - } : { - x: skidding, - y: distance - }; - } - - function offset(_ref2) { - var state = _ref2.state, - options = _ref2.options, - name = _ref2.name; - var _options$offset = options.offset, - offset = _options$offset === void 0 ? [0, 0] : _options$offset; - var data = placements.reduce(function (acc, placement) { - acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset); - return acc; - }, {}); - var _data$state$placement = data[state.placement], - x = _data$state$placement.x, - y = _data$state$placement.y; - - if (state.modifiersData.popperOffsets != null) { - state.modifiersData.popperOffsets.x += x; - state.modifiersData.popperOffsets.y += y; - } - - state.modifiersData[name] = data; - } // eslint-disable-next-line import/no-unused-modules - - - var offset$1 = { - name: 'offset', - enabled: true, - phase: 'main', - requires: ['popperOffsets'], - fn: offset - }; - - function popperOffsets(_ref) { - var state = _ref.state, - name = _ref.name; - // Offsets are the actual position the popper needs to have to be - // properly positioned near its reference element - // This is the most basic placement, and will be adjusted by - // the modifiers in the next step - state.modifiersData[name] = computeOffsets({ - reference: state.rects.reference, - element: state.rects.popper, - strategy: 'absolute', - placement: state.placement - }); - } // eslint-disable-next-line import/no-unused-modules - - - var popperOffsets$1 = { - name: 'popperOffsets', - enabled: true, - phase: 'read', - fn: popperOffsets, - data: {} - }; - - function getAltAxis(axis) { - return axis === 'x' ? 'y' : 'x'; - } - - function preventOverflow(_ref) { - var state = _ref.state, - options = _ref.options, - name = _ref.name; - var _options$mainAxis = options.mainAxis, - checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, - _options$altAxis = options.altAxis, - checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis, - boundary = options.boundary, - rootBoundary = options.rootBoundary, - altBoundary = options.altBoundary, - padding = options.padding, - _options$tether = options.tether, - tether = _options$tether === void 0 ? true : _options$tether, - _options$tetherOffset = options.tetherOffset, - tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset; - var overflow = detectOverflow(state, { - boundary: boundary, - rootBoundary: rootBoundary, - padding: padding, - altBoundary: altBoundary - }); - var basePlacement = getBasePlacement(state.placement); - var variation = getVariation(state.placement); - var isBasePlacement = !variation; - var mainAxis = getMainAxisFromPlacement(basePlacement); - var altAxis = getAltAxis(mainAxis); - var popperOffsets = state.modifiersData.popperOffsets; - var referenceRect = state.rects.reference; - var popperRect = state.rects.popper; - var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign(Object.assign({}, state.rects), {}, { - placement: state.placement - })) : tetherOffset; - var data = { - x: 0, - y: 0 - }; - - if (!popperOffsets) { - return; - } - - if (checkMainAxis) { - var mainSide = mainAxis === 'y' ? top : left; - var altSide = mainAxis === 'y' ? bottom : right; - var len = mainAxis === 'y' ? 'height' : 'width'; - var offset = popperOffsets[mainAxis]; - var min = popperOffsets[mainAxis] + overflow[mainSide]; - var max = popperOffsets[mainAxis] - overflow[altSide]; - var additive = tether ? -popperRect[len] / 2 : 0; - var minLen = variation === start ? referenceRect[len] : popperRect[len]; - var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go - // outside the reference bounds - - var arrowElement = state.elements.arrow; - var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : { - width: 0, - height: 0 - }; - var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject(); - var arrowPaddingMin = arrowPaddingObject[mainSide]; - var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want - // to include its full size in the calculation. If the reference is small - // and near the edge of a boundary, the popper can overflow even if the - // reference is not overflowing as well (e.g. virtual elements with no - // width or height) - - var arrowLen = within(0, referenceRect[len], arrowRect[len]); - var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - tetherOffsetValue : minLen - arrowLen - arrowPaddingMin - tetherOffsetValue; - var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + tetherOffsetValue : maxLen + arrowLen + arrowPaddingMax + tetherOffsetValue; - var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow); - var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0; - var offsetModifierValue = state.modifiersData.offset ? state.modifiersData.offset[state.placement][mainAxis] : 0; - var tetherMin = popperOffsets[mainAxis] + minOffset - offsetModifierValue - clientOffset; - var tetherMax = popperOffsets[mainAxis] + maxOffset - offsetModifierValue; - var preventedOffset = within(tether ? Math.min(min, tetherMin) : min, offset, tether ? Math.max(max, tetherMax) : max); - popperOffsets[mainAxis] = preventedOffset; - data[mainAxis] = preventedOffset - offset; - } - - if (checkAltAxis) { - var _mainSide = mainAxis === 'x' ? top : left; - - var _altSide = mainAxis === 'x' ? bottom : right; - - var _offset = popperOffsets[altAxis]; - - var _min = _offset + overflow[_mainSide]; - - var _max = _offset - overflow[_altSide]; - - var _preventedOffset = within(_min, _offset, _max); - - popperOffsets[altAxis] = _preventedOffset; - data[altAxis] = _preventedOffset - _offset; - } - - state.modifiersData[name] = data; - } // eslint-disable-next-line import/no-unused-modules - - - var preventOverflow$1 = { - name: 'preventOverflow', - enabled: true, - phase: 'main', - fn: preventOverflow, - requiresIfExists: ['offset'] - }; - - function getHTMLElementScroll(element) { - return { - scrollLeft: element.scrollLeft, - scrollTop: element.scrollTop - }; - } - - function getNodeScroll(node) { - if (node === getWindow(node) || !isHTMLElement(node)) { - return getWindowScroll(node); - } else { - return getHTMLElementScroll(node); - } - } - - // Composite means it takes into account transforms as well as layout. - - function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) { - if (isFixed === void 0) { - isFixed = false; - } - - var documentElement = getDocumentElement(offsetParent); - var rect = getBoundingClientRect(elementOrVirtualElement); - var isOffsetParentAnElement = isHTMLElement(offsetParent); - var scroll = { - scrollLeft: 0, - scrollTop: 0 - }; - var offsets = { - x: 0, - y: 0 - }; - - if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) { - if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078 - isScrollParent(documentElement)) { - scroll = getNodeScroll(offsetParent); - } - - if (isHTMLElement(offsetParent)) { - offsets = getBoundingClientRect(offsetParent); - offsets.x += offsetParent.clientLeft; - offsets.y += offsetParent.clientTop; - } else if (documentElement) { - offsets.x = getWindowScrollBarX(documentElement); - } - } - - return { - x: rect.left + scroll.scrollLeft - offsets.x, - y: rect.top + scroll.scrollTop - offsets.y, - width: rect.width, - height: rect.height - }; - } - - function order(modifiers) { - var map = new Map(); - var visited = new Set(); - var result = []; - modifiers.forEach(function (modifier) { - map.set(modifier.name, modifier); - }); // On visiting object, check for its dependencies and visit them recursively - - function sort(modifier) { - visited.add(modifier.name); - var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []); - requires.forEach(function (dep) { - if (!visited.has(dep)) { - var depModifier = map.get(dep); - - if (depModifier) { - sort(depModifier); - } - } - }); - result.push(modifier); - } - - modifiers.forEach(function (modifier) { - if (!visited.has(modifier.name)) { - // check for visited object - sort(modifier); - } - }); - return result; - } - - function orderModifiers(modifiers) { - // order based on dependencies - var orderedModifiers = order(modifiers); // order based on phase - - return modifierPhases.reduce(function (acc, phase) { - return acc.concat(orderedModifiers.filter(function (modifier) { - return modifier.phase === phase; - })); - }, []); - } - - function debounce(fn) { - var pending; - return function () { - if (!pending) { - pending = new Promise(function (resolve) { - Promise.resolve().then(function () { - pending = undefined; - resolve(fn()); - }); - }); - } - - return pending; - }; - } - - function mergeByName(modifiers) { - var merged = modifiers.reduce(function (merged, current) { - var existing = merged[current.name]; - merged[current.name] = existing ? Object.assign(Object.assign(Object.assign({}, existing), current), {}, { - options: Object.assign(Object.assign({}, existing.options), current.options), - data: Object.assign(Object.assign({}, existing.data), current.data) - }) : current; - return merged; - }, {}); // IE11 does not support Object.values - - return Object.keys(merged).map(function (key) { - return merged[key]; - }); - } - - var DEFAULT_OPTIONS = { - placement: 'bottom', - modifiers: [], - strategy: 'absolute' - }; - - function areValidElements() { - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - - return !args.some(function (element) { - return !(element && typeof element.getBoundingClientRect === 'function'); - }); - } - - function popperGenerator(generatorOptions) { - if (generatorOptions === void 0) { - generatorOptions = {}; - } - - var _generatorOptions = generatorOptions, - _generatorOptions$def = _generatorOptions.defaultModifiers, - defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def, - _generatorOptions$def2 = _generatorOptions.defaultOptions, - defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2; - return function createPopper(reference, popper, options) { - if (options === void 0) { - options = defaultOptions; - } - - var state = { - placement: 'bottom', - orderedModifiers: [], - options: Object.assign(Object.assign({}, DEFAULT_OPTIONS), defaultOptions), - modifiersData: {}, - elements: { - reference: reference, - popper: popper - }, - attributes: {}, - styles: {} - }; - var effectCleanupFns = []; - var isDestroyed = false; - var instance = { - state: state, - setOptions: function setOptions(options) { - cleanupModifierEffects(); - state.options = Object.assign(Object.assign(Object.assign({}, defaultOptions), state.options), options); - state.scrollParents = { - reference: isElement$1(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [], - popper: listScrollParents(popper) - }; // Orders the modifiers based on their dependencies and `phase` - // properties - - var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers - - state.orderedModifiers = orderedModifiers.filter(function (m) { - return m.enabled; - }); // Validate the provided modifiers so that the consumer will get warned - - runModifierEffects(); - return instance.update(); - }, - // Sync update – it will always be executed, even if not necessary. This - // is useful for low frequency updates where sync behavior simplifies the - // logic. - // For high frequency updates (e.g. `resize` and `scroll` events), always - // prefer the async Popper#update method - forceUpdate: function forceUpdate() { - if (isDestroyed) { - return; - } - - var _state$elements = state.elements, - reference = _state$elements.reference, - popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements - // anymore - - if (!areValidElements(reference, popper)) { - - return; - } // Store the reference and popper rects to be read by modifiers - - - state.rects = { - reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'), - popper: getLayoutRect(popper) - }; // Modifiers have the ability to reset the current update cycle. The - // most common use case for this is the `flip` modifier changing the - // placement, which then needs to re-run all the modifiers, because the - // logic was previously ran for the previous placement and is therefore - // stale/incorrect - - state.reset = false; - state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier - // is filled with the initial data specified by the modifier. This means - // it doesn't persist and is fresh on each update. - // To ensure persistent data, use `${name}#persistent` - - state.orderedModifiers.forEach(function (modifier) { - return state.modifiersData[modifier.name] = Object.assign({}, modifier.data); - }); - - for (var index = 0; index < state.orderedModifiers.length; index++) { - - if (state.reset === true) { - state.reset = false; - index = -1; - continue; - } - - var _state$orderedModifie = state.orderedModifiers[index], - fn = _state$orderedModifie.fn, - _state$orderedModifie2 = _state$orderedModifie.options, - _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2, - name = _state$orderedModifie.name; - - if (typeof fn === 'function') { - state = fn({ - state: state, - options: _options, - name: name, - instance: instance - }) || state; - } - } - }, - // Async and optimistically optimized update – it will not be executed if - // not necessary (debounced to run at most once-per-tick) - update: debounce(function () { - return new Promise(function (resolve) { - instance.forceUpdate(); - resolve(state); - }); - }), - destroy: function destroy() { - cleanupModifierEffects(); - isDestroyed = true; - } - }; - - if (!areValidElements(reference, popper)) { - - return instance; - } - - instance.setOptions(options).then(function (state) { - if (!isDestroyed && options.onFirstUpdate) { - options.onFirstUpdate(state); - } - }); // Modifiers have the ability to execute arbitrary code before the first - // update cycle runs. They will be executed in the same order as the update - // cycle. This is useful when a modifier adds some persistent data that - // other modifiers need to use, but the modifier is run after the dependent - // one. - - function runModifierEffects() { - state.orderedModifiers.forEach(function (_ref3) { - var name = _ref3.name, - _ref3$options = _ref3.options, - options = _ref3$options === void 0 ? {} : _ref3$options, - effect = _ref3.effect; - - if (typeof effect === 'function') { - var cleanupFn = effect({ - state: state, - name: name, - instance: instance, - options: options - }); - - var noopFn = function noopFn() {}; - - effectCleanupFns.push(cleanupFn || noopFn); - } - }); - } - - function cleanupModifierEffects() { - effectCleanupFns.forEach(function (fn) { - return fn(); - }); - effectCleanupFns = []; - } - - return instance; - }; - } - var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules - - var defaultModifiers = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1]; - var createPopper$1 = /*#__PURE__*/popperGenerator({ - defaultModifiers: defaultModifiers - }); // eslint-disable-next-line import/no-unused-modules - - var defaultModifiers$1 = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1, offset$1, flip$1, preventOverflow$1, arrow$1, hide$1]; - var createPopper$2 = /*#__PURE__*/popperGenerator({ - defaultModifiers: defaultModifiers$1 - }); // eslint-disable-next-line import/no-unused-modules - - var Popper = /*#__PURE__*/Object.freeze({ - __proto__: null, - popperGenerator: popperGenerator, - detectOverflow: detectOverflow, - createPopperBase: createPopper, - createPopper: createPopper$2, - createPopperLite: createPopper$1, - top: top, - bottom: bottom, - right: right, - left: left, - auto: auto, - basePlacements: basePlacements, - start: start, - end: end, - clippingParents: clippingParents, - viewport: viewport, - popper: popper, - reference: reference, - variationPlacements: variationPlacements, - placements: placements, - beforeRead: beforeRead, - read: read, - afterRead: afterRead, - beforeMain: beforeMain, - main: main, - afterMain: afterMain, - beforeWrite: beforeWrite, - write: write, - afterWrite: afterWrite, - modifierPhases: modifierPhases, - applyStyles: applyStyles$1, - arrow: arrow$1, - computeStyles: computeStyles$1, - eventListeners: eventListeners, - flip: flip$1, - hide: hide$1, - offset: offset$1, - popperOffsets: popperOffsets$1, - preventOverflow: preventOverflow$1 - }); - - /** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - - var NAME$4 = 'dropdown'; - var DATA_KEY$4 = 'bs.dropdown'; - var EVENT_KEY$4 = "." + DATA_KEY$4; - var DATA_API_KEY$4 = '.data-api'; - var ESCAPE_KEY = 'Escape'; - var SPACE_KEY = 'Space'; - var TAB_KEY = 'Tab'; - var ARROW_UP_KEY = 'ArrowUp'; - var ARROW_DOWN_KEY = 'ArrowDown'; - var RIGHT_MOUSE_BUTTON = 2; // MouseEvent.button value for the secondary button, usually the right button - - var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEY + "|" + ARROW_DOWN_KEY + "|" + ESCAPE_KEY); - var EVENT_HIDE$1 = "hide" + EVENT_KEY$4; - var EVENT_HIDDEN$1 = "hidden" + EVENT_KEY$4; - var EVENT_SHOW$1 = "show" + EVENT_KEY$4; - var EVENT_SHOWN$1 = "shown" + EVENT_KEY$4; - var EVENT_CLICK = "click" + EVENT_KEY$4; - var EVENT_CLICK_DATA_API$4 = "click" + EVENT_KEY$4 + DATA_API_KEY$4; - var EVENT_KEYDOWN_DATA_API = "keydown" + EVENT_KEY$4 + DATA_API_KEY$4; - var EVENT_KEYUP_DATA_API = "keyup" + EVENT_KEY$4 + DATA_API_KEY$4; - var CLASS_NAME_DISABLED = 'disabled'; - var CLASS_NAME_SHOW$1 = 'show'; - var CLASS_NAME_DROPUP = 'dropup'; - var CLASS_NAME_DROPEND = 'dropend'; - var CLASS_NAME_DROPSTART = 'dropstart'; - var CLASS_NAME_NAVBAR = 'navbar'; - var SELECTOR_DATA_TOGGLE$2 = '[data-bs-toggle="dropdown"]'; - var SELECTOR_FORM_CHILD = '.dropdown form'; - var SELECTOR_MENU = '.dropdown-menu'; - var SELECTOR_NAVBAR_NAV = '.navbar-nav'; - var SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'; - var PLACEMENT_TOP = isRTL ? 'top-end' : 'top-start'; - var PLACEMENT_TOPEND = isRTL ? 'top-start' : 'top-end'; - var PLACEMENT_BOTTOM = isRTL ? 'bottom-end' : 'bottom-start'; - var PLACEMENT_BOTTOMEND = isRTL ? 'bottom-start' : 'bottom-end'; - var PLACEMENT_RIGHT = isRTL ? 'left-start' : 'right-start'; - var PLACEMENT_LEFT = isRTL ? 'right-start' : 'left-start'; - var Default$2 = { - offset: 0, - flip: true, - boundary: 'clippingParents', - reference: 'toggle', - display: 'dynamic', - popperConfig: null - }; - var DefaultType$2 = { - offset: '(number|string|function)', - flip: 'boolean', - boundary: '(string|element)', - reference: '(string|element)', - display: 'string', - popperConfig: '(null|object)' - }; - /** - * ------------------------------------------------------------------------ - * Class Definition - * ------------------------------------------------------------------------ - */ - - var Dropdown = /*#__PURE__*/function (_BaseComponent) { - _inheritsLoose(Dropdown, _BaseComponent); - - function Dropdown(element, config) { - var _this; - - _this = _BaseComponent.call(this, element) || this; - _this._popper = null; - _this._config = _this._getConfig(config); - _this._menu = _this._getMenuElement(); - _this._inNavbar = _this._detectNavbar(); - - _this._addEventListeners(); - - return _this; - } // Getters - - - var _proto = Dropdown.prototype; - - // Public - _proto.toggle = function toggle() { - if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED)) { - return; - } - - var isActive = this._element.classList.contains(CLASS_NAME_SHOW$1); - - Dropdown.clearMenus(); - - if (isActive) { - return; - } - - this.show(); - }; - - _proto.show = function show() { - if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED) || this._menu.classList.contains(CLASS_NAME_SHOW$1)) { - return; - } - - var parent = Dropdown.getParentFromElement(this._element); - var relatedTarget = { - relatedTarget: this._element - }; - var showEvent = EventHandler.trigger(this._element, EVENT_SHOW$1, relatedTarget); - - if (showEvent.defaultPrevented) { - return; - } // Totally disable Popper for Dropdowns in Navbar - - - if (!this._inNavbar) { - if (typeof Popper === 'undefined') { - throw new TypeError('Bootstrap\'s dropdowns require Popper (https://popper.js.org)'); - } - - var referenceElement = this._element; - - if (this._config.reference === 'parent') { - referenceElement = parent; - } else if (isElement(this._config.reference)) { - referenceElement = this._config.reference; // Check if it's jQuery element - - if (typeof this._config.reference.jquery !== 'undefined') { - referenceElement = this._config.reference[0]; - } - } - - this._popper = createPopper$2(referenceElement, this._menu, this._getPopperConfig()); - } // 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 && !parent.closest(SELECTOR_NAVBAR_NAV)) { - var _ref; - - (_ref = []).concat.apply(_ref, document.body.children).forEach(function (elem) { - return EventHandler.on(elem, 'mouseover', null, noop()); - }); - } - - this._element.focus(); - - this._element.setAttribute('aria-expanded', true); - - this._menu.classList.toggle(CLASS_NAME_SHOW$1); - - this._element.classList.toggle(CLASS_NAME_SHOW$1); - - EventHandler.trigger(parent, EVENT_SHOWN$1, relatedTarget); - }; - - _proto.hide = function hide() { - if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED) || !this._menu.classList.contains(CLASS_NAME_SHOW$1)) { - return; - } - - var parent = Dropdown.getParentFromElement(this._element); - var relatedTarget = { - relatedTarget: this._element - }; - var hideEvent = EventHandler.trigger(parent, EVENT_HIDE$1, relatedTarget); - - if (hideEvent.defaultPrevented) { - return; - } - - if (this._popper) { - this._popper.destroy(); - } - - this._menu.classList.toggle(CLASS_NAME_SHOW$1); - - this._element.classList.toggle(CLASS_NAME_SHOW$1); - - EventHandler.trigger(parent, EVENT_HIDDEN$1, relatedTarget); - }; - - _proto.dispose = function dispose() { - _BaseComponent.prototype.dispose.call(this); - - EventHandler.off(this._element, EVENT_KEY$4); - this._menu = null; - - if (this._popper) { - this._popper.destroy(); - - this._popper = null; - } - }; - - _proto.update = function update() { - this._inNavbar = this._detectNavbar(); - - if (this._popper) { - this._popper.update(); - } - } // Private - ; - - _proto._addEventListeners = function _addEventListeners() { - var _this2 = this; - - EventHandler.on(this._element, EVENT_CLICK, function (event) { - event.preventDefault(); - event.stopPropagation(); - - _this2.toggle(); - }); - }; - - _proto._getConfig = function _getConfig(config) { - config = _extends({}, this.constructor.Default, Manipulator.getDataAttributes(this._element), config); - typeCheckConfig(NAME$4, config, this.constructor.DefaultType); - return config; - }; - - _proto._getMenuElement = function _getMenuElement() { - return SelectorEngine.next(this._element, SELECTOR_MENU)[0]; - }; - - _proto._getPlacement = function _getPlacement() { - var parentDropdown = this._element.parentNode; - - if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) { - return PLACEMENT_RIGHT; - } - - if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) { - return PLACEMENT_LEFT; - } // We need to trim the value because custom properties can also include spaces - - - var isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end'; - - if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) { - return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP; - } - - return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM; - }; - - _proto._detectNavbar = function _detectNavbar() { - return this._element.closest("." + CLASS_NAME_NAVBAR) !== null; - }; - - _proto._getPopperConfig = function _getPopperConfig() { - var popperConfig = { - placement: this._getPlacement(), - modifiers: [{ - name: 'preventOverflow', - options: { - altBoundary: this._config.flip, - rootBoundary: this._config.boundary - } - }] - }; // Disable Popper if we have a static display - - if (this._config.display === 'static') { - popperConfig.modifiers = [{ - name: 'applyStyles', - enabled: false - }]; - } - - return _extends({}, popperConfig, this._config.popperConfig); - } // Static - ; - - Dropdown.dropdownInterface = function dropdownInterface(element, config) { - var data = Data.getData(element, DATA_KEY$4); - - var _config = typeof config === 'object' ? config : null; - - if (!data) { - data = new Dropdown(element, _config); - } - - if (typeof config === 'string') { - if (typeof data[config] === 'undefined') { - throw new TypeError("No method named \"" + config + "\""); - } - - data[config](); - } - }; - - Dropdown.jQueryInterface = function jQueryInterface(config) { - return this.each(function () { - Dropdown.dropdownInterface(this, config); - }); - }; - - Dropdown.clearMenus = function clearMenus(event) { - if (event && (event.button === RIGHT_MOUSE_BUTTON || event.type === 'keyup' && event.key !== TAB_KEY)) { - return; - } - - var toggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE$2); - - for (var i = 0, len = toggles.length; i < len; i++) { - var parent = Dropdown.getParentFromElement(toggles[i]); - var context = Data.getData(toggles[i], DATA_KEY$4); - var relatedTarget = { - relatedTarget: toggles[i] - }; - - if (event && event.type === 'click') { - relatedTarget.clickEvent = event; - } - - if (!context) { - continue; - } - - var dropdownMenu = context._menu; - - if (!toggles[i].classList.contains(CLASS_NAME_SHOW$1)) { - continue; - } - - if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.key === TAB_KEY) && dropdownMenu.contains(event.target)) { - continue; - } - - var hideEvent = EventHandler.trigger(parent, EVENT_HIDE$1, relatedTarget); - - if (hideEvent.defaultPrevented) { - continue; - } // If this is a touch-enabled device we remove the extra - // empty mouseover listeners we added for iOS support - - - if ('ontouchstart' in document.documentElement) { - var _ref2; - - (_ref2 = []).concat.apply(_ref2, document.body.children).forEach(function (elem) { - return EventHandler.off(elem, 'mouseover', null, noop()); - }); - } - - toggles[i].setAttribute('aria-expanded', 'false'); - - if (context._popper) { - context._popper.destroy(); - } - - dropdownMenu.classList.remove(CLASS_NAME_SHOW$1); - toggles[i].classList.remove(CLASS_NAME_SHOW$1); - EventHandler.trigger(parent, EVENT_HIDDEN$1, relatedTarget); - } - }; - - Dropdown.getParentFromElement = function getParentFromElement(element) { - return getElementFromSelector(element) || element.parentNode; - }; - - Dropdown.dataApiKeydownHandler = function dataApiKeydownHandler(event) { - // If not input/textarea: - // - And not a key in REGEXP_KEYDOWN => not a dropdown command - // If input/textarea: - // - If space key => not a dropdown command - // - If key is other than escape - // - If key is not up or down => not a dropdown command - // - If trigger inside the menu => not a dropdown command - if (/input|textarea/i.test(event.target.tagName) ? event.key === SPACE_KEY || event.key !== ESCAPE_KEY && (event.key !== ARROW_DOWN_KEY && event.key !== ARROW_UP_KEY || event.target.closest(SELECTOR_MENU)) : !REGEXP_KEYDOWN.test(event.key)) { - return; - } - - event.preventDefault(); - event.stopPropagation(); - - if (this.disabled || this.classList.contains(CLASS_NAME_DISABLED)) { - return; - } - - var parent = Dropdown.getParentFromElement(this); - var isActive = this.classList.contains(CLASS_NAME_SHOW$1); - - if (event.key === ESCAPE_KEY) { - var button = this.matches(SELECTOR_DATA_TOGGLE$2) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE$2)[0]; - button.focus(); - Dropdown.clearMenus(); - return; - } - - if (!isActive || event.key === SPACE_KEY) { - Dropdown.clearMenus(); - return; - } - - var items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, parent).filter(isVisible); - - if (!items.length) { - return; - } - - var index = items.indexOf(event.target); // Up - - if (event.key === ARROW_UP_KEY && index > 0) { - index--; - } // Down - - - if (event.key === ARROW_DOWN_KEY && index < items.length - 1) { - index++; - } // index is -1 if the first keydown is an ArrowUp - - - index = index === -1 ? 0 : index; - items[index].focus(); - }; - - _createClass(Dropdown, null, [{ - key: "Default", - get: function get() { - return Default$2; - } - }, { - key: "DefaultType", - get: function get() { - return DefaultType$2; - } - }, { - key: "DATA_KEY", - get: function get() { - return DATA_KEY$4; - } - }]); - - return Dropdown; - }(BaseComponent); - /** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ - - - EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$2, Dropdown.dataApiKeydownHandler); - EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler); - EventHandler.on(document, EVENT_CLICK_DATA_API$4, Dropdown.clearMenus); - EventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus); - EventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$2, function (event) { - event.preventDefault(); - event.stopPropagation(); - Dropdown.dropdownInterface(this, 'toggle'); - }); - EventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_FORM_CHILD, function (e) { - return e.stopPropagation(); - }); - /** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - * add .Dropdown to jQuery only if jQuery is present - */ - - onDOMContentLoaded(function () { - var $ = getjQuery(); - /* istanbul ignore if */ - - if ($) { - var JQUERY_NO_CONFLICT = $.fn[NAME$4]; - $.fn[NAME$4] = Dropdown.jQueryInterface; - $.fn[NAME$4].Constructor = Dropdown; - - $.fn[NAME$4].noConflict = function () { - $.fn[NAME$4] = JQUERY_NO_CONFLICT; - return Dropdown.jQueryInterface; - }; - } - }); - - /** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - - var NAME$5 = 'modal'; - var DATA_KEY$5 = 'bs.modal'; - var EVENT_KEY$5 = "." + DATA_KEY$5; - var DATA_API_KEY$5 = '.data-api'; - var ESCAPE_KEY$1 = 'Escape'; - var Default$3 = { - backdrop: true, - keyboard: true, - focus: true - }; - var DefaultType$3 = { - backdrop: '(boolean|string)', - keyboard: 'boolean', - focus: 'boolean' - }; - var EVENT_HIDE$2 = "hide" + EVENT_KEY$5; - var EVENT_HIDE_PREVENTED = "hidePrevented" + EVENT_KEY$5; - var EVENT_HIDDEN$2 = "hidden" + EVENT_KEY$5; - var EVENT_SHOW$2 = "show" + EVENT_KEY$5; - var EVENT_SHOWN$2 = "shown" + EVENT_KEY$5; - var EVENT_FOCUSIN = "focusin" + EVENT_KEY$5; - var EVENT_RESIZE = "resize" + EVENT_KEY$5; - var EVENT_CLICK_DISMISS = "click.dismiss" + EVENT_KEY$5; - var EVENT_KEYDOWN_DISMISS = "keydown.dismiss" + EVENT_KEY$5; - var EVENT_MOUSEUP_DISMISS = "mouseup.dismiss" + EVENT_KEY$5; - var EVENT_MOUSEDOWN_DISMISS = "mousedown.dismiss" + EVENT_KEY$5; - var EVENT_CLICK_DATA_API$5 = "click" + EVENT_KEY$5 + DATA_API_KEY$5; - var CLASS_NAME_SCROLLBAR_MEASURER = 'modal-scrollbar-measure'; - var CLASS_NAME_BACKDROP = 'modal-backdrop'; - var CLASS_NAME_OPEN = 'modal-open'; - var CLASS_NAME_FADE = 'fade'; - var CLASS_NAME_SHOW$2 = 'show'; - var CLASS_NAME_STATIC = 'modal-static'; - var SELECTOR_DIALOG = '.modal-dialog'; - var SELECTOR_MODAL_BODY = '.modal-body'; - var SELECTOR_DATA_TOGGLE$3 = '[data-bs-toggle="modal"]'; - var SELECTOR_DATA_DISMISS = '[data-bs-dismiss="modal"]'; - var SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'; - var SELECTOR_STICKY_CONTENT = '.sticky-top'; - /** - * ------------------------------------------------------------------------ - * Class Definition - * ------------------------------------------------------------------------ - */ - - var Modal = /*#__PURE__*/function (_BaseComponent) { - _inheritsLoose(Modal, _BaseComponent); - - function Modal(element, config) { - var _this; - - _this = _BaseComponent.call(this, element) || this; - _this._config = _this._getConfig(config); - _this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, element); - _this._backdrop = null; - _this._isShown = false; - _this._isBodyOverflowing = false; - _this._ignoreBackdropClick = false; - _this._isTransitioning = false; - _this._scrollbarWidth = 0; - return _this; - } // Getters - - - var _proto = Modal.prototype; - - // Public - _proto.toggle = function toggle(relatedTarget) { - return this._isShown ? this.hide() : this.show(relatedTarget); - }; - - _proto.show = function show(relatedTarget) { - var _this2 = this; - - if (this._isShown || this._isTransitioning) { - return; - } - - if (this._element.classList.contains(CLASS_NAME_FADE)) { - this._isTransitioning = true; - } - - var showEvent = EventHandler.trigger(this._element, EVENT_SHOW$2, { - relatedTarget: relatedTarget - }); - - if (this._isShown || showEvent.defaultPrevented) { - return; - } - - this._isShown = true; - - this._checkScrollbar(); - - this._setScrollbar(); - - this._adjustDialog(); - - this._setEscapeEvent(); - - this._setResizeEvent(); - - EventHandler.on(this._element, EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, function (event) { - return _this2.hide(event); - }); - EventHandler.on(this._dialog, EVENT_MOUSEDOWN_DISMISS, function () { - EventHandler.one(_this2._element, EVENT_MOUSEUP_DISMISS, function (event) { - if (event.target === _this2._element) { - _this2._ignoreBackdropClick = true; - } - }); - }); - - this._showBackdrop(function () { - return _this2._showElement(relatedTarget); - }); - }; - - _proto.hide = function hide(event) { - var _this3 = this; - - if (event) { - event.preventDefault(); - } - - if (!this._isShown || this._isTransitioning) { - return; - } - - var hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$2); - - if (hideEvent.defaultPrevented) { - return; - } - - this._isShown = false; - - var transition = this._element.classList.contains(CLASS_NAME_FADE); - - if (transition) { - this._isTransitioning = true; - } - - this._setEscapeEvent(); - - this._setResizeEvent(); - - EventHandler.off(document, EVENT_FOCUSIN); - - this._element.classList.remove(CLASS_NAME_SHOW$2); - - EventHandler.off(this._element, EVENT_CLICK_DISMISS); - EventHandler.off(this._dialog, EVENT_MOUSEDOWN_DISMISS); - - if (transition) { - var transitionDuration = getTransitionDurationFromElement(this._element); - EventHandler.one(this._element, TRANSITION_END, function (event) { - return _this3._hideModal(event); - }); - emulateTransitionEnd(this._element, transitionDuration); - } else { - this._hideModal(); - } - }; - - _proto.dispose = function dispose() { - [window, this._element, this._dialog].forEach(function (htmlElement) { - return EventHandler.off(htmlElement, EVENT_KEY$5); - }); - - _BaseComponent.prototype.dispose.call(this); - /** - * `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API` - * Do not move `document` in `htmlElements` array - * It will remove `EVENT_CLICK_DATA_API` event that should remain - */ - - - EventHandler.off(document, EVENT_FOCUSIN); - this._config = null; - this._dialog = null; - this._backdrop = null; - this._isShown = null; - this._isBodyOverflowing = null; - this._ignoreBackdropClick = null; - this._isTransitioning = null; - this._scrollbarWidth = null; - }; - - _proto.handleUpdate = function handleUpdate() { - this._adjustDialog(); - } // Private - ; - - _proto._getConfig = function _getConfig(config) { - config = _extends({}, Default$3, config); - typeCheckConfig(NAME$5, config, DefaultType$3); - return config; - }; - - _proto._showElement = function _showElement(relatedTarget) { - var _this4 = this; - - var transition = this._element.classList.contains(CLASS_NAME_FADE); - - var modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog); - - if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) { - // Don't move modal's DOM position - document.body.appendChild(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; - - if (modalBody) { - modalBody.scrollTop = 0; - } - - if (transition) { - reflow(this._element); - } - - this._element.classList.add(CLASS_NAME_SHOW$2); - - if (this._config.focus) { - this._enforceFocus(); - } - - var transitionComplete = function transitionComplete() { - if (_this4._config.focus) { - _this4._element.focus(); - } - - _this4._isTransitioning = false; - EventHandler.trigger(_this4._element, EVENT_SHOWN$2, { - relatedTarget: relatedTarget - }); - }; - - if (transition) { - var transitionDuration = getTransitionDurationFromElement(this._dialog); - EventHandler.one(this._dialog, TRANSITION_END, transitionComplete); - emulateTransitionEnd(this._dialog, transitionDuration); - } else { - transitionComplete(); - } - }; - - _proto._enforceFocus = function _enforceFocus() { - var _this5 = this; - - EventHandler.off(document, EVENT_FOCUSIN); // guard against infinite focus loop - - EventHandler.on(document, EVENT_FOCUSIN, function (event) { - if (document !== event.target && _this5._element !== event.target && !_this5._element.contains(event.target)) { - _this5._element.focus(); - } - }); - }; - - _proto._setEscapeEvent = function _setEscapeEvent() { - var _this6 = this; - - if (this._isShown) { - EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, function (event) { - if (_this6._config.keyboard && event.key === ESCAPE_KEY$1) { - event.preventDefault(); - - _this6.hide(); - } else if (!_this6._config.keyboard && event.key === ESCAPE_KEY$1) { - _this6._triggerBackdropTransition(); - } - }); - } else { - EventHandler.off(this._element, EVENT_KEYDOWN_DISMISS); - } - }; - - _proto._setResizeEvent = function _setResizeEvent() { - var _this7 = this; - - if (this._isShown) { - EventHandler.on(window, EVENT_RESIZE, function () { - return _this7._adjustDialog(); - }); - } else { - EventHandler.off(window, EVENT_RESIZE); - } - }; - - _proto._hideModal = function _hideModal() { - var _this8 = this; - - this._element.style.display = 'none'; - - this._element.setAttribute('aria-hidden', true); - - this._element.removeAttribute('aria-modal'); - - this._element.removeAttribute('role'); - - this._isTransitioning = false; - - this._showBackdrop(function () { - document.body.classList.remove(CLASS_NAME_OPEN); - - _this8._resetAdjustments(); - - _this8._resetScrollbar(); - - EventHandler.trigger(_this8._element, EVENT_HIDDEN$2); - }); - }; - - _proto._removeBackdrop = function _removeBackdrop() { - this._backdrop.parentNode.removeChild(this._backdrop); - - this._backdrop = null; - }; - - _proto._showBackdrop = function _showBackdrop(callback) { - var _this9 = this; - - var animate = this._element.classList.contains(CLASS_NAME_FADE) ? CLASS_NAME_FADE : ''; - - if (this._isShown && this._config.backdrop) { - this._backdrop = document.createElement('div'); - this._backdrop.className = CLASS_NAME_BACKDROP; - - if (animate) { - this._backdrop.classList.add(animate); - } - - document.body.appendChild(this._backdrop); - EventHandler.on(this._element, EVENT_CLICK_DISMISS, function (event) { - if (_this9._ignoreBackdropClick) { - _this9._ignoreBackdropClick = false; - return; - } - - if (event.target !== event.currentTarget) { - return; - } - - if (_this9._config.backdrop === 'static') { - _this9._triggerBackdropTransition(); - } else { - _this9.hide(); - } - }); - - if (animate) { - reflow(this._backdrop); - } - - this._backdrop.classList.add(CLASS_NAME_SHOW$2); - - if (!animate) { - callback(); - return; - } - - var backdropTransitionDuration = getTransitionDurationFromElement(this._backdrop); - EventHandler.one(this._backdrop, TRANSITION_END, callback); - emulateTransitionEnd(this._backdrop, backdropTransitionDuration); - } else if (!this._isShown && this._backdrop) { - this._backdrop.classList.remove(CLASS_NAME_SHOW$2); - - var callbackRemove = function callbackRemove() { - _this9._removeBackdrop(); - - callback(); - }; - - if (this._element.classList.contains(CLASS_NAME_FADE)) { - var _backdropTransitionDuration = getTransitionDurationFromElement(this._backdrop); - - EventHandler.one(this._backdrop, TRANSITION_END, callbackRemove); - emulateTransitionEnd(this._backdrop, _backdropTransitionDuration); - } else { - callbackRemove(); - } - } else { - callback(); - } - }; - - _proto._triggerBackdropTransition = function _triggerBackdropTransition() { - var _this10 = this; - - var hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED); - - if (hideEvent.defaultPrevented) { - return; - } - - var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; - - if (!isModalOverflowing) { - this._element.style.overflowY = 'hidden'; - } - - this._element.classList.add(CLASS_NAME_STATIC); - - var modalTransitionDuration = getTransitionDurationFromElement(this._dialog); - EventHandler.off(this._element, TRANSITION_END); - EventHandler.one(this._element, TRANSITION_END, function () { - _this10._element.classList.remove(CLASS_NAME_STATIC); - - if (!isModalOverflowing) { - EventHandler.one(_this10._element, TRANSITION_END, function () { - _this10._element.style.overflowY = ''; - }); - emulateTransitionEnd(_this10._element, modalTransitionDuration); - } - }); - emulateTransitionEnd(this._element, modalTransitionDuration); - - this._element.focus(); - } // ---------------------------------------------------------------------- - // the following methods are used to handle overflowing modals - // ---------------------------------------------------------------------- - ; - - _proto._adjustDialog = function _adjustDialog() { - var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; - - if (!this._isBodyOverflowing && isModalOverflowing && !isRTL || this._isBodyOverflowing && !isModalOverflowing && isRTL) { - this._element.style.paddingLeft = this._scrollbarWidth + "px"; - } - - if (this._isBodyOverflowing && !isModalOverflowing && !isRTL || !this._isBodyOverflowing && isModalOverflowing && isRTL) { - this._element.style.paddingRight = this._scrollbarWidth + "px"; - } - }; - - _proto._resetAdjustments = function _resetAdjustments() { - this._element.style.paddingLeft = ''; - this._element.style.paddingRight = ''; - }; - - _proto._checkScrollbar = function _checkScrollbar() { - var rect = document.body.getBoundingClientRect(); - this._isBodyOverflowing = Math.round(rect.left + rect.right) < window.innerWidth; - this._scrollbarWidth = this._getScrollbarWidth(); - }; - - _proto._setScrollbar = function _setScrollbar() { - var _this11 = this; - - if (this._isBodyOverflowing) { - // Note: DOMNode.style.paddingRight returns the actual value or '' if not set - // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set - // Adjust fixed content padding - SelectorEngine.find(SELECTOR_FIXED_CONTENT).forEach(function (element) { - var actualPadding = element.style.paddingRight; - var calculatedPadding = window.getComputedStyle(element)['padding-right']; - Manipulator.setDataAttribute(element, 'padding-right', actualPadding); - element.style.paddingRight = Number.parseFloat(calculatedPadding) + _this11._scrollbarWidth + "px"; - }); // Adjust sticky content margin - - SelectorEngine.find(SELECTOR_STICKY_CONTENT).forEach(function (element) { - var actualMargin = element.style.marginRight; - var calculatedMargin = window.getComputedStyle(element)['margin-right']; - Manipulator.setDataAttribute(element, 'margin-right', actualMargin); - element.style.marginRight = Number.parseFloat(calculatedMargin) - _this11._scrollbarWidth + "px"; - }); // Adjust body padding - - var actualPadding = document.body.style.paddingRight; - var calculatedPadding = window.getComputedStyle(document.body)['padding-right']; - Manipulator.setDataAttribute(document.body, 'padding-right', actualPadding); - document.body.style.paddingRight = Number.parseFloat(calculatedPadding) + this._scrollbarWidth + "px"; - } - - document.body.classList.add(CLASS_NAME_OPEN); - }; - - _proto._resetScrollbar = function _resetScrollbar() { - // Restore fixed content padding - SelectorEngine.find(SELECTOR_FIXED_CONTENT).forEach(function (element) { - var padding = Manipulator.getDataAttribute(element, 'padding-right'); - - if (typeof padding !== 'undefined') { - Manipulator.removeDataAttribute(element, 'padding-right'); - element.style.paddingRight = padding; - } - }); // Restore sticky content and navbar-toggler margin - - SelectorEngine.find("" + SELECTOR_STICKY_CONTENT).forEach(function (element) { - var margin = Manipulator.getDataAttribute(element, 'margin-right'); - - if (typeof margin !== 'undefined') { - Manipulator.removeDataAttribute(element, 'margin-right'); - element.style.marginRight = margin; - } - }); // Restore body padding - - var padding = Manipulator.getDataAttribute(document.body, 'padding-right'); - - if (typeof padding === 'undefined') { - document.body.style.paddingRight = ''; - } else { - Manipulator.removeDataAttribute(document.body, 'padding-right'); - document.body.style.paddingRight = padding; - } - }; - - _proto._getScrollbarWidth = function _getScrollbarWidth() { - // thx d.walsh - var scrollDiv = document.createElement('div'); - scrollDiv.className = CLASS_NAME_SCROLLBAR_MEASURER; - document.body.appendChild(scrollDiv); - var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth; - document.body.removeChild(scrollDiv); - return scrollbarWidth; - } // Static - ; - - Modal.jQueryInterface = function jQueryInterface(config, relatedTarget) { - return this.each(function () { - var data = Data.getData(this, DATA_KEY$5); - - var _config = _extends({}, Default$3, Manipulator.getDataAttributes(this), typeof config === 'object' && config ? config : {}); - - if (!data) { - data = new Modal(this, _config); - } - - if (typeof config === 'string') { - if (typeof data[config] === 'undefined') { - throw new TypeError("No method named \"" + config + "\""); - } - - data[config](relatedTarget); - } - }); - }; - - _createClass(Modal, null, [{ - key: "Default", - get: function get() { - return Default$3; - } - }, { - key: "DATA_KEY", - get: function get() { - return DATA_KEY$5; - } - }]); - - return Modal; - }(BaseComponent); - /** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ - - - EventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_TOGGLE$3, function (event) { - var _this12 = this; - - var target = getElementFromSelector(this); - - if (this.tagName === 'A' || this.tagName === 'AREA') { - event.preventDefault(); - } - - EventHandler.one(target, EVENT_SHOW$2, function (showEvent) { - if (showEvent.defaultPrevented) { - // only register focus restorer if modal will actually get shown - return; - } - - EventHandler.one(target, EVENT_HIDDEN$2, function () { - if (isVisible(_this12)) { - _this12.focus(); - } - }); - }); - var data = Data.getData(target, DATA_KEY$5); - - if (!data) { - var config = _extends({}, Manipulator.getDataAttributes(target), Manipulator.getDataAttributes(this)); - - data = new Modal(target, config); - } - - data.show(this); - }); - /** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - * add .Modal to jQuery only if jQuery is present - */ - - onDOMContentLoaded(function () { - var $ = getjQuery(); - /* istanbul ignore if */ - - if ($) { - var JQUERY_NO_CONFLICT = $.fn[NAME$5]; - $.fn[NAME$5] = Modal.jQueryInterface; - $.fn[NAME$5].Constructor = Modal; - - $.fn[NAME$5].noConflict = function () { - $.fn[NAME$5] = JQUERY_NO_CONFLICT; - return Modal.jQueryInterface; - }; - } - }); - - /** - * -------------------------------------------------------------------------- - * Bootstrap (v5.0.0-beta1): util/sanitizer.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ - var uriAttrs = new Set(['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']); - var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i; - /** - * A pattern that recognizes a commonly useful subset of URLs that are safe. - * - * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts - */ - - var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/gi; - /** - * A pattern that matches safe data URLs. Only matches image, video and audio types. - * - * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts - */ - - var DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i; - - var allowedAttribute = function allowedAttribute(attr, allowedAttributeList) { - var attrName = attr.nodeName.toLowerCase(); - - if (allowedAttributeList.includes(attrName)) { - if (uriAttrs.has(attrName)) { - return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN)); - } - - return true; - } - - var regExp = allowedAttributeList.filter(function (attrRegex) { - return attrRegex instanceof RegExp; - }); // Check if a regular expression validates the attribute. - - for (var i = 0, len = regExp.length; i < len; i++) { - if (attrName.match(regExp[i])) { - return true; - } - } - - return false; - }; - - var DefaultAllowlist = { - // Global attributes allowed on any supplied element below. - '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN], - a: ['target', 'href', 'title', 'rel'], - area: [], - b: [], - br: [], - col: [], - code: [], - div: [], - em: [], - hr: [], - h1: [], - h2: [], - h3: [], - h4: [], - h5: [], - h6: [], - i: [], - img: ['src', 'srcset', 'alt', 'title', 'width', 'height'], - li: [], - ol: [], - p: [], - pre: [], - s: [], - small: [], - span: [], - sub: [], - sup: [], - strong: [], - u: [], - ul: [] - }; - function sanitizeHtml(unsafeHtml, allowList, sanitizeFn) { - var _ref; - - if (!unsafeHtml.length) { - return unsafeHtml; - } - - if (sanitizeFn && typeof sanitizeFn === 'function') { - return sanitizeFn(unsafeHtml); - } - - var domParser = new window.DOMParser(); - var createdDocument = domParser.parseFromString(unsafeHtml, 'text/html'); - var allowlistKeys = Object.keys(allowList); - - var elements = (_ref = []).concat.apply(_ref, createdDocument.body.querySelectorAll('*')); - - var _loop = function _loop(i, len) { - var _ref2; - - var el = elements[i]; - var elName = el.nodeName.toLowerCase(); - - if (!allowlistKeys.includes(elName)) { - el.parentNode.removeChild(el); - return "continue"; - } - - var attributeList = (_ref2 = []).concat.apply(_ref2, el.attributes); - - var allowedAttributes = [].concat(allowList['*'] || [], allowList[elName] || []); - attributeList.forEach(function (attr) { - if (!allowedAttribute(attr, allowedAttributes)) { - el.removeAttribute(attr.nodeName); - } - }); - }; - - for (var i = 0, len = elements.length; i < len; i++) { - var _ret = _loop(i); - - if (_ret === "continue") continue; - } - - return createdDocument.body.innerHTML; - } - - /** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - - var NAME$6 = 'tooltip'; - var DATA_KEY$6 = 'bs.tooltip'; - var EVENT_KEY$6 = "." + DATA_KEY$6; - var CLASS_PREFIX = 'bs-tooltip'; - var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", 'g'); - var DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn']); - var DefaultType$4 = { - animation: 'boolean', - template: 'string', - title: '(string|element|function)', - trigger: 'string', - delay: '(number|object)', - html: 'boolean', - selector: '(string|boolean)', - placement: '(string|function)', - container: '(string|element|boolean)', - fallbackPlacements: '(null|array)', - boundary: '(string|element)', - customClass: '(string|function)', - sanitize: 'boolean', - sanitizeFn: '(null|function)', - allowList: 'object', - popperConfig: '(null|object)' - }; - var AttachmentMap = { - AUTO: 'auto', - TOP: 'top', - RIGHT: isRTL ? 'left' : 'right', - BOTTOM: 'bottom', - LEFT: isRTL ? 'right' : 'left' - }; - var Default$4 = { - animation: true, - template: '' + '' + '' + '', - trigger: 'hover focus', - title: '', - delay: 0, - html: false, - selector: false, - placement: 'top', - container: false, - fallbackPlacements: null, - boundary: 'clippingParents', - customClass: '', - sanitize: true, - sanitizeFn: null, - allowList: DefaultAllowlist, - popperConfig: null - }; - var Event$1 = { - HIDE: "hide" + EVENT_KEY$6, - HIDDEN: "hidden" + EVENT_KEY$6, - SHOW: "show" + EVENT_KEY$6, - SHOWN: "shown" + EVENT_KEY$6, - INSERTED: "inserted" + EVENT_KEY$6, - CLICK: "click" + EVENT_KEY$6, - FOCUSIN: "focusin" + EVENT_KEY$6, - FOCUSOUT: "focusout" + EVENT_KEY$6, - MOUSEENTER: "mouseenter" + EVENT_KEY$6, - MOUSELEAVE: "mouseleave" + EVENT_KEY$6 - }; - var CLASS_NAME_FADE$1 = 'fade'; - var CLASS_NAME_MODAL = 'modal'; - var CLASS_NAME_SHOW$3 = 'show'; - var HOVER_STATE_SHOW = 'show'; - var HOVER_STATE_OUT = 'out'; - var SELECTOR_TOOLTIP_INNER = '.tooltip-inner'; - var TRIGGER_HOVER = 'hover'; - var TRIGGER_FOCUS = 'focus'; - var TRIGGER_CLICK = 'click'; - var TRIGGER_MANUAL = 'manual'; - /** - * ------------------------------------------------------------------------ - * Class Definition - * ------------------------------------------------------------------------ - */ - - var Tooltip = /*#__PURE__*/function (_BaseComponent) { - _inheritsLoose(Tooltip, _BaseComponent); - - function Tooltip(element, config) { - var _this; - - if (typeof Popper === 'undefined') { - throw new TypeError('Bootstrap\'s tooltips require Popper (https://popper.js.org)'); - } - - _this = _BaseComponent.call(this, element) || this; // private - - _this._isEnabled = true; - _this._timeout = 0; - _this._hoverState = ''; - _this._activeTrigger = {}; - _this._popper = null; // Protected - - _this.config = _this._getConfig(config); - _this.tip = null; - - _this._setListeners(); - - return _this; - } // Getters - - - var _proto = Tooltip.prototype; - - // Public - _proto.enable = function enable() { - this._isEnabled = true; - }; - - _proto.disable = function disable() { - this._isEnabled = false; - }; - - _proto.toggleEnabled = function toggleEnabled() { - this._isEnabled = !this._isEnabled; - }; - - _proto.toggle = function toggle(event) { - if (!this._isEnabled) { - return; - } - - if (event) { - var dataKey = this.constructor.DATA_KEY; - var context = Data.getData(event.delegateTarget, dataKey); - - if (!context) { - context = new this.constructor(event.delegateTarget, this._getDelegateConfig()); - Data.setData(event.delegateTarget, dataKey, context); - } - - context._activeTrigger.click = !context._activeTrigger.click; - - if (context._isWithActiveTrigger()) { - context._enter(null, context); - } else { - context._leave(null, context); - } - } else { - if (this.getTipElement().classList.contains(CLASS_NAME_SHOW$3)) { - this._leave(null, this); - - return; - } - - this._enter(null, this); - } - }; - - _proto.dispose = function dispose() { - clearTimeout(this._timeout); - EventHandler.off(this._element, this.constructor.EVENT_KEY); - EventHandler.off(this._element.closest("." + CLASS_NAME_MODAL), 'hide.bs.modal', this._hideModalHandler); - - if (this.tip) { - this.tip.parentNode.removeChild(this.tip); - } - - this._isEnabled = null; - this._timeout = null; - this._hoverState = null; - this._activeTrigger = null; - - if (this._popper) { - this._popper.destroy(); - } - - this._popper = null; - this.config = null; - this.tip = null; - - _BaseComponent.prototype.dispose.call(this); - }; - - _proto.show = function show() { - var _this2 = this; - - if (this._element.style.display === 'none') { - throw new Error('Please use show on visible elements'); - } - - if (this.isWithContent() && this._isEnabled) { - var showEvent = EventHandler.trigger(this._element, this.constructor.Event.SHOW); - var shadowRoot = findShadowRoot(this._element); - var isInTheDom = shadowRoot === null ? this._element.ownerDocument.documentElement.contains(this._element) : shadowRoot.contains(this._element); - - if (showEvent.defaultPrevented || !isInTheDom) { - return; - } - - var tip = this.getTipElement(); - var tipId = getUID(this.constructor.NAME); - tip.setAttribute('id', tipId); - - this._element.setAttribute('aria-describedby', tipId); - - this.setContent(); - - if (this.config.animation) { - tip.classList.add(CLASS_NAME_FADE$1); - } - - var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this._element) : this.config.placement; - - var attachment = this._getAttachment(placement); - - this._addAttachmentClass(attachment); - - var container = this._getContainer(); - - Data.setData(tip, this.constructor.DATA_KEY, this); - - if (!this._element.ownerDocument.documentElement.contains(this.tip)) { - container.appendChild(tip); - } - - EventHandler.trigger(this._element, this.constructor.Event.INSERTED); - this._popper = createPopper$2(this._element, tip, this._getPopperConfig(attachment)); - tip.classList.add(CLASS_NAME_SHOW$3); - var customClass = typeof this.config.customClass === 'function' ? this.config.customClass() : this.config.customClass; - - if (customClass) { - var _tip$classList; - - (_tip$classList = tip.classList).add.apply(_tip$classList, customClass.split(' ')); - } // If this is a touch-enabled device we add extra - // empty mouseover listeners to the body's immediate children; - // only needed because of broken event delegation on iOS - // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html - - - if ('ontouchstart' in document.documentElement) { - var _ref; - - (_ref = []).concat.apply(_ref, document.body.children).forEach(function (element) { - EventHandler.on(element, 'mouseover', noop()); - }); - } - - var complete = function complete() { - var prevHoverState = _this2._hoverState; - _this2._hoverState = null; - EventHandler.trigger(_this2._element, _this2.constructor.Event.SHOWN); - - if (prevHoverState === HOVER_STATE_OUT) { - _this2._leave(null, _this2); - } - }; - - if (this.tip.classList.contains(CLASS_NAME_FADE$1)) { - var transitionDuration = getTransitionDurationFromElement(this.tip); - EventHandler.one(this.tip, TRANSITION_END, complete); - emulateTransitionEnd(this.tip, transitionDuration); - } else { - complete(); - } - } - }; - - _proto.hide = function hide() { - var _this3 = this; - - if (!this._popper) { - return; - } - - var tip = this.getTipElement(); - - var complete = function complete() { - if (_this3._hoverState !== HOVER_STATE_SHOW && tip.parentNode) { - tip.parentNode.removeChild(tip); - } - - _this3._cleanTipClass(); - - _this3._element.removeAttribute('aria-describedby'); - - EventHandler.trigger(_this3._element, _this3.constructor.Event.HIDDEN); - - if (_this3._popper) { - _this3._popper.destroy(); - - _this3._popper = null; - } - }; - - var hideEvent = EventHandler.trigger(this._element, this.constructor.Event.HIDE); - - if (hideEvent.defaultPrevented) { - return; - } - - tip.classList.remove(CLASS_NAME_SHOW$3); // If this is a touch-enabled device we remove the extra - // empty mouseover listeners we added for iOS support - - if ('ontouchstart' in document.documentElement) { - var _ref2; - - (_ref2 = []).concat.apply(_ref2, document.body.children).forEach(function (element) { - return EventHandler.off(element, 'mouseover', noop); - }); - } - - this._activeTrigger[TRIGGER_CLICK] = false; - this._activeTrigger[TRIGGER_FOCUS] = false; - this._activeTrigger[TRIGGER_HOVER] = false; - - if (this.tip.classList.contains(CLASS_NAME_FADE$1)) { - var transitionDuration = getTransitionDurationFromElement(tip); - EventHandler.one(tip, TRANSITION_END, complete); - emulateTransitionEnd(tip, transitionDuration); - } else { - complete(); - } - - this._hoverState = ''; - }; - - _proto.update = function update() { - if (this._popper !== null) { - this._popper.update(); - } - } // Protected - ; - - _proto.isWithContent = function isWithContent() { - return Boolean(this.getTitle()); - }; - - _proto.getTipElement = function getTipElement() { - if (this.tip) { - return this.tip; - } - - var element = document.createElement('div'); - element.innerHTML = this.config.template; - this.tip = element.children[0]; - return this.tip; - }; - - _proto.setContent = function setContent() { - var tip = this.getTipElement(); - this.setElementContent(SelectorEngine.findOne(SELECTOR_TOOLTIP_INNER, tip), this.getTitle()); - tip.classList.remove(CLASS_NAME_FADE$1, CLASS_NAME_SHOW$3); - }; - - _proto.setElementContent = function setElementContent(element, content) { - if (element === null) { - return; - } - - if (typeof content === 'object' && isElement(content)) { - if (content.jquery) { - content = content[0]; - } // content is a DOM node or a jQuery - - - if (this.config.html) { - if (content.parentNode !== element) { - element.innerHTML = ''; - element.appendChild(content); - } - } else { - element.textContent = content.textContent; - } - - return; - } - - if (this.config.html) { - if (this.config.sanitize) { - content = sanitizeHtml(content, this.config.allowList, this.config.sanitizeFn); - } - - element.innerHTML = content; - } else { - element.textContent = content; - } - }; - - _proto.getTitle = function getTitle() { - var title = this._element.getAttribute('data-bs-original-title'); - - if (!title) { - title = typeof this.config.title === 'function' ? this.config.title.call(this._element) : this.config.title; - } - - return title; - }; - - _proto.updateAttachment = function updateAttachment(attachment) { - if (attachment === 'right') { - return 'end'; - } - - if (attachment === 'left') { - return 'start'; - } - - return attachment; - } // Private - ; - - _proto._getPopperConfig = function _getPopperConfig(attachment) { - var _this4 = this; - - var flipModifier = { - name: 'flip', - options: { - altBoundary: true - } - }; - - if (this.config.fallbackPlacements) { - flipModifier.options.fallbackPlacements = this.config.fallbackPlacements; - } - - var defaultBsConfig = { - placement: attachment, - modifiers: [flipModifier, { - name: 'preventOverflow', - options: { - rootBoundary: this.config.boundary - } - }, { - name: 'arrow', - options: { - element: "." + this.constructor.NAME + "-arrow" - } - }, { - name: 'onChange', - enabled: true, - phase: 'afterWrite', - fn: function fn(data) { - return _this4._handlePopperPlacementChange(data); - } - }], - onFirstUpdate: function onFirstUpdate(data) { - if (data.options.placement !== data.placement) { - _this4._handlePopperPlacementChange(data); - } - } - }; - return _extends({}, defaultBsConfig, this.config.popperConfig); - }; - - _proto._addAttachmentClass = function _addAttachmentClass(attachment) { - this.getTipElement().classList.add(CLASS_PREFIX + "-" + this.updateAttachment(attachment)); - }; - - _proto._getContainer = function _getContainer() { - if (this.config.container === false) { - return document.body; - } - - if (isElement(this.config.container)) { - return this.config.container; - } - - return SelectorEngine.findOne(this.config.container); - }; - - _proto._getAttachment = function _getAttachment(placement) { - return AttachmentMap[placement.toUpperCase()]; - }; - - _proto._setListeners = function _setListeners() { - var _this5 = this; - - var triggers = this.config.trigger.split(' '); - triggers.forEach(function (trigger) { - if (trigger === 'click') { - EventHandler.on(_this5._element, _this5.constructor.Event.CLICK, _this5.config.selector, function (event) { - return _this5.toggle(event); - }); - } else if (trigger !== TRIGGER_MANUAL) { - var eventIn = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSEENTER : _this5.constructor.Event.FOCUSIN; - var eventOut = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSELEAVE : _this5.constructor.Event.FOCUSOUT; - EventHandler.on(_this5._element, eventIn, _this5.config.selector, function (event) { - return _this5._enter(event); - }); - EventHandler.on(_this5._element, eventOut, _this5.config.selector, function (event) { - return _this5._leave(event); - }); - } - }); - - this._hideModalHandler = function () { - if (_this5._element) { - _this5.hide(); - } - }; - - EventHandler.on(this._element.closest("." + CLASS_NAME_MODAL), 'hide.bs.modal', this._hideModalHandler); - - if (this.config.selector) { - this.config = _extends({}, this.config, { - trigger: 'manual', - selector: '' - }); - } else { - this._fixTitle(); - } - }; - - _proto._fixTitle = function _fixTitle() { - var title = this._element.getAttribute('title'); - - var originalTitleType = typeof this._element.getAttribute('data-bs-original-title'); - - if (title || originalTitleType !== 'string') { - this._element.setAttribute('data-bs-original-title', title || ''); - - if (title && !this._element.getAttribute('aria-label') && !this._element.textContent) { - this._element.setAttribute('aria-label', title); - } - - this._element.setAttribute('title', ''); - } - }; - - _proto._enter = function _enter(event, context) { - var dataKey = this.constructor.DATA_KEY; - context = context || Data.getData(event.delegateTarget, dataKey); - - if (!context) { - context = new this.constructor(event.delegateTarget, this._getDelegateConfig()); - Data.setData(event.delegateTarget, dataKey, context); - } - - if (event) { - context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true; - } - - if (context.getTipElement().classList.contains(CLASS_NAME_SHOW$3) || context._hoverState === HOVER_STATE_SHOW) { - context._hoverState = HOVER_STATE_SHOW; - return; - } - - clearTimeout(context._timeout); - context._hoverState = HOVER_STATE_SHOW; - - if (!context.config.delay || !context.config.delay.show) { - context.show(); - return; - } - - context._timeout = setTimeout(function () { - if (context._hoverState === HOVER_STATE_SHOW) { - context.show(); - } - }, context.config.delay.show); - }; - - _proto._leave = function _leave(event, context) { - var dataKey = this.constructor.DATA_KEY; - context = context || Data.getData(event.delegateTarget, dataKey); - - if (!context) { - context = new this.constructor(event.delegateTarget, this._getDelegateConfig()); - Data.setData(event.delegateTarget, dataKey, context); - } - - if (event) { - context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = false; - } - - if (context._isWithActiveTrigger()) { - return; - } - - clearTimeout(context._timeout); - context._hoverState = HOVER_STATE_OUT; - - if (!context.config.delay || !context.config.delay.hide) { - context.hide(); - return; - } - - context._timeout = setTimeout(function () { - if (context._hoverState === HOVER_STATE_OUT) { - context.hide(); - } - }, context.config.delay.hide); - }; - - _proto._isWithActiveTrigger = function _isWithActiveTrigger() { - for (var trigger in this._activeTrigger) { - if (this._activeTrigger[trigger]) { - return true; - } - } - - return false; - }; - - _proto._getConfig = function _getConfig(config) { - var dataAttributes = Manipulator.getDataAttributes(this._element); - Object.keys(dataAttributes).forEach(function (dataAttr) { - if (DISALLOWED_ATTRIBUTES.has(dataAttr)) { - delete dataAttributes[dataAttr]; - } - }); - - if (config && typeof config.container === 'object' && config.container.jquery) { - config.container = config.container[0]; - } - - config = _extends({}, this.constructor.Default, dataAttributes, typeof config === 'object' && config ? config : {}); - - 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(); - } - - typeCheckConfig(NAME$6, config, this.constructor.DefaultType); - - if (config.sanitize) { - config.template = sanitizeHtml(config.template, config.allowList, config.sanitizeFn); - } - - return config; - }; - - _proto._getDelegateConfig = function _getDelegateConfig() { - var config = {}; - - if (this.config) { - for (var key in this.config) { - if (this.constructor.Default[key] !== this.config[key]) { - config[key] = this.config[key]; - } - } - } - - return config; - }; - - _proto._cleanTipClass = function _cleanTipClass() { - var tip = this.getTipElement(); - var tabClass = tip.getAttribute('class').match(BSCLS_PREFIX_REGEX); - - if (tabClass !== null && tabClass.length > 0) { - tabClass.map(function (token) { - return token.trim(); - }).forEach(function (tClass) { - return tip.classList.remove(tClass); - }); - } - }; - - _proto._handlePopperPlacementChange = function _handlePopperPlacementChange(popperData) { - var state = popperData.state; - - if (!state) { - return; - } - - this.tip = state.elements.popper; - - this._cleanTipClass(); - - this._addAttachmentClass(this._getAttachment(state.placement)); - } // Static - ; - - Tooltip.jQueryInterface = function jQueryInterface(config) { - return this.each(function () { - var data = Data.getData(this, DATA_KEY$6); - - var _config = typeof config === 'object' && config; - - if (!data && /dispose|hide/.test(config)) { - return; - } - - if (!data) { - data = new Tooltip(this, _config); - } - - if (typeof config === 'string') { - if (typeof data[config] === 'undefined') { - throw new TypeError("No method named \"" + config + "\""); - } - - data[config](); - } - }); - }; - - _createClass(Tooltip, null, [{ - key: "Default", - get: function get() { - return Default$4; - } - }, { - key: "NAME", - get: function get() { - return NAME$6; - } - }, { - key: "DATA_KEY", - get: function get() { - return DATA_KEY$6; - } - }, { - key: "Event", - get: function get() { - return Event$1; - } - }, { - key: "EVENT_KEY", - get: function get() { - return EVENT_KEY$6; - } - }, { - key: "DefaultType", - get: function get() { - return DefaultType$4; - } - }]); - - return Tooltip; - }(BaseComponent); - /** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - * add .Tooltip to jQuery only if jQuery is present - */ - - - onDOMContentLoaded(function () { - var $ = getjQuery(); - /* istanbul ignore if */ - - if ($) { - var JQUERY_NO_CONFLICT = $.fn[NAME$6]; - $.fn[NAME$6] = Tooltip.jQueryInterface; - $.fn[NAME$6].Constructor = Tooltip; - - $.fn[NAME$6].noConflict = function () { - $.fn[NAME$6] = JQUERY_NO_CONFLICT; - return Tooltip.jQueryInterface; - }; - } - }); - - /** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - - var NAME$7 = 'popover'; - var DATA_KEY$7 = 'bs.popover'; - var EVENT_KEY$7 = "." + DATA_KEY$7; - var CLASS_PREFIX$1 = 'bs-popover'; - var BSCLS_PREFIX_REGEX$1 = new RegExp("(^|\\s)" + CLASS_PREFIX$1 + "\\S+", 'g'); - - var Default$5 = _extends({}, Tooltip.Default, { - placement: 'right', - trigger: 'click', - content: '', - template: '' + '' + '' + '' + '' - }); - - var DefaultType$5 = _extends({}, Tooltip.DefaultType, { - content: '(string|element|function)' - }); - - var Event$2 = { - HIDE: "hide" + EVENT_KEY$7, - HIDDEN: "hidden" + EVENT_KEY$7, - SHOW: "show" + EVENT_KEY$7, - SHOWN: "shown" + EVENT_KEY$7, - INSERTED: "inserted" + EVENT_KEY$7, - CLICK: "click" + EVENT_KEY$7, - FOCUSIN: "focusin" + EVENT_KEY$7, - FOCUSOUT: "focusout" + EVENT_KEY$7, - MOUSEENTER: "mouseenter" + EVENT_KEY$7, - MOUSELEAVE: "mouseleave" + EVENT_KEY$7 - }; - var CLASS_NAME_FADE$2 = 'fade'; - var CLASS_NAME_SHOW$4 = 'show'; - var SELECTOR_TITLE = '.popover-header'; - var SELECTOR_CONTENT = '.popover-body'; - /** - * ------------------------------------------------------------------------ - * Class Definition - * ------------------------------------------------------------------------ - */ - - var Popover = /*#__PURE__*/function (_Tooltip) { - _inheritsLoose(Popover, _Tooltip); - - function Popover() { - return _Tooltip.apply(this, arguments) || this; - } - - var _proto = Popover.prototype; - - // Overrides - _proto.isWithContent = function isWithContent() { - return this.getTitle() || this._getContent(); - }; - - _proto.setContent = function setContent() { - var tip = this.getTipElement(); // we use append for html objects to maintain js events - - this.setElementContent(SelectorEngine.findOne(SELECTOR_TITLE, tip), this.getTitle()); - - var content = this._getContent(); - - if (typeof content === 'function') { - content = content.call(this._element); - } - - this.setElementContent(SelectorEngine.findOne(SELECTOR_CONTENT, tip), content); - tip.classList.remove(CLASS_NAME_FADE$2, CLASS_NAME_SHOW$4); - } // Private - ; - - _proto._addAttachmentClass = function _addAttachmentClass(attachment) { - this.getTipElement().classList.add(CLASS_PREFIX$1 + "-" + this.updateAttachment(attachment)); - }; - - _proto._getContent = function _getContent() { - return this._element.getAttribute('data-bs-content') || this.config.content; - }; - - _proto._cleanTipClass = function _cleanTipClass() { - var tip = this.getTipElement(); - var tabClass = tip.getAttribute('class').match(BSCLS_PREFIX_REGEX$1); - - if (tabClass !== null && tabClass.length > 0) { - tabClass.map(function (token) { - return token.trim(); - }).forEach(function (tClass) { - return tip.classList.remove(tClass); - }); - } - } // Static - ; - - Popover.jQueryInterface = function jQueryInterface(config) { - return this.each(function () { - var data = Data.getData(this, DATA_KEY$7); - - var _config = typeof config === 'object' ? config : null; - - if (!data && /dispose|hide/.test(config)) { - return; - } - - if (!data) { - data = new Popover(this, _config); - Data.setData(this, DATA_KEY$7, data); - } - - if (typeof config === 'string') { - if (typeof data[config] === 'undefined') { - throw new TypeError("No method named \"" + config + "\""); - } - - data[config](); - } - }); - }; - - _createClass(Popover, null, [{ - key: "Default", - // Getters - get: function get() { - return Default$5; - } - }, { - key: "NAME", - get: function get() { - return NAME$7; - } - }, { - key: "DATA_KEY", - get: function get() { - return DATA_KEY$7; - } - }, { - key: "Event", - get: function get() { - return Event$2; - } - }, { - key: "EVENT_KEY", - get: function get() { - return EVENT_KEY$7; - } - }, { - key: "DefaultType", - get: function get() { - return DefaultType$5; - } - }]); - - return Popover; - }(Tooltip); - /** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - * add .Popover to jQuery only if jQuery is present - */ - - - onDOMContentLoaded(function () { - var $ = getjQuery(); - /* istanbul ignore if */ - - if ($) { - var JQUERY_NO_CONFLICT = $.fn[NAME$7]; - $.fn[NAME$7] = Popover.jQueryInterface; - $.fn[NAME$7].Constructor = Popover; - - $.fn[NAME$7].noConflict = function () { - $.fn[NAME$7] = JQUERY_NO_CONFLICT; - return Popover.jQueryInterface; - }; - } - }); - - /** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - - var NAME$8 = 'scrollspy'; - var DATA_KEY$8 = 'bs.scrollspy'; - var EVENT_KEY$8 = "." + DATA_KEY$8; - var DATA_API_KEY$6 = '.data-api'; - var Default$6 = { - offset: 10, - method: 'auto', - target: '' - }; - var DefaultType$6 = { - offset: 'number', - method: 'string', - target: '(string|element)' - }; - var EVENT_ACTIVATE = "activate" + EVENT_KEY$8; - var EVENT_SCROLL = "scroll" + EVENT_KEY$8; - var EVENT_LOAD_DATA_API$1 = "load" + EVENT_KEY$8 + DATA_API_KEY$6; - var CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'; - var CLASS_NAME_ACTIVE$2 = 'active'; - var SELECTOR_DATA_SPY = '[data-bs-spy="scroll"]'; - var SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'; - var SELECTOR_NAV_LINKS = '.nav-link'; - var SELECTOR_NAV_ITEMS = '.nav-item'; - var SELECTOR_LIST_ITEMS = '.list-group-item'; - var SELECTOR_DROPDOWN = '.dropdown'; - var SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'; - var METHOD_OFFSET = 'offset'; - var METHOD_POSITION = 'position'; - /** - * ------------------------------------------------------------------------ - * Class Definition - * ------------------------------------------------------------------------ - */ - - var ScrollSpy = /*#__PURE__*/function (_BaseComponent) { - _inheritsLoose(ScrollSpy, _BaseComponent); - - function ScrollSpy(element, config) { - var _this; - - _this = _BaseComponent.call(this, element) || this; - _this._scrollElement = element.tagName === 'BODY' ? window : element; - _this._config = _this._getConfig(config); - _this._selector = _this._config.target + " " + SELECTOR_NAV_LINKS + ", " + _this._config.target + " " + SELECTOR_LIST_ITEMS + ", " + _this._config.target + " ." + CLASS_NAME_DROPDOWN_ITEM; - _this._offsets = []; - _this._targets = []; - _this._activeTarget = null; - _this._scrollHeight = 0; - EventHandler.on(_this._scrollElement, EVENT_SCROLL, function (event) { - return _this._process(event); - }); - - _this.refresh(); - - _this._process(); - - return _this; - } // Getters - - - var _proto = ScrollSpy.prototype; - - // Public - _proto.refresh = function refresh() { - var _this2 = this; - - var autoMethod = this._scrollElement === this._scrollElement.window ? METHOD_OFFSET : METHOD_POSITION; - var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method; - var offsetBase = offsetMethod === METHOD_POSITION ? this._getScrollTop() : 0; - this._offsets = []; - this._targets = []; - this._scrollHeight = this._getScrollHeight(); - var targets = SelectorEngine.find(this._selector); - targets.map(function (element) { - var targetSelector = getSelectorFromElement(element); - var target = targetSelector ? SelectorEngine.findOne(targetSelector) : null; - - if (target) { - var targetBCR = target.getBoundingClientRect(); - - if (targetBCR.width || targetBCR.height) { - return [Manipulator[offsetMethod](target).top + offsetBase, targetSelector]; - } - } - - return null; - }).filter(function (item) { - return item; - }).sort(function (a, b) { - return a[0] - b[0]; - }).forEach(function (item) { - _this2._offsets.push(item[0]); - - _this2._targets.push(item[1]); - }); - }; - - _proto.dispose = function dispose() { - _BaseComponent.prototype.dispose.call(this); - - EventHandler.off(this._scrollElement, EVENT_KEY$8); - this._scrollElement = null; - this._config = null; - this._selector = null; - this._offsets = null; - this._targets = null; - this._activeTarget = null; - this._scrollHeight = null; - } // Private - ; - - _proto._getConfig = function _getConfig(config) { - config = _extends({}, Default$6, typeof config === 'object' && config ? config : {}); - - if (typeof config.target !== 'string' && isElement(config.target)) { - var id = config.target.id; - - if (!id) { - id = getUID(NAME$8); - config.target.id = id; - } - - config.target = "#" + id; - } - - typeCheckConfig(NAME$8, config, DefaultType$6); - return config; - }; - - _proto._getScrollTop = function _getScrollTop() { - return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop; - }; - - _proto._getScrollHeight = function _getScrollHeight() { - return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight); - }; - - _proto._getOffsetHeight = function _getOffsetHeight() { - return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height; - }; - - _proto._process = function _process() { - var scrollTop = this._getScrollTop() + this._config.offset; - - var scrollHeight = this._getScrollHeight(); - - var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight(); - - if (this._scrollHeight !== scrollHeight) { - this.refresh(); - } - - if (scrollTop >= maxScroll) { - var target = this._targets[this._targets.length - 1]; - - if (this._activeTarget !== target) { - this._activate(target); - } - - return; - } - - if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) { - this._activeTarget = null; - - this._clear(); - - return; - } - - for (var i = this._offsets.length; i--;) { - var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]); - - if (isActiveTarget) { - this._activate(this._targets[i]); - } - } - }; - - _proto._activate = function _activate(target) { - this._activeTarget = target; - - this._clear(); - - var queries = this._selector.split(',').map(function (selector) { - return selector + "[data-bs-target=\"" + target + "\"]," + selector + "[href=\"" + target + "\"]"; - }); - - var link = SelectorEngine.findOne(queries.join(',')); - - if (link.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) { - SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE, link.closest(SELECTOR_DROPDOWN)).classList.add(CLASS_NAME_ACTIVE$2); - link.classList.add(CLASS_NAME_ACTIVE$2); - } else { - // Set triggered link as active - link.classList.add(CLASS_NAME_ACTIVE$2); - SelectorEngine.parents(link, SELECTOR_NAV_LIST_GROUP).forEach(function (listGroup) { - // Set triggered links parents as active - // With both and markup a parent is the previous sibling of any nav ancestor - SelectorEngine.prev(listGroup, SELECTOR_NAV_LINKS + ", " + SELECTOR_LIST_ITEMS).forEach(function (item) { - return item.classList.add(CLASS_NAME_ACTIVE$2); - }); // Handle special case when .nav-link is inside .nav-item - - SelectorEngine.prev(listGroup, SELECTOR_NAV_ITEMS).forEach(function (navItem) { - SelectorEngine.children(navItem, SELECTOR_NAV_LINKS).forEach(function (item) { - return item.classList.add(CLASS_NAME_ACTIVE$2); - }); - }); - }); - } - - EventHandler.trigger(this._scrollElement, EVENT_ACTIVATE, { - relatedTarget: target - }); - }; - - _proto._clear = function _clear() { - SelectorEngine.find(this._selector).filter(function (node) { - return node.classList.contains(CLASS_NAME_ACTIVE$2); - }).forEach(function (node) { - return node.classList.remove(CLASS_NAME_ACTIVE$2); - }); - } // Static - ; - - ScrollSpy.jQueryInterface = function jQueryInterface(config) { - return this.each(function () { - var data = Data.getData(this, DATA_KEY$8); - - var _config = typeof config === 'object' && config; - - if (!data) { - data = new ScrollSpy(this, _config); - } - - if (typeof config === 'string') { - if (typeof data[config] === 'undefined') { - throw new TypeError("No method named \"" + config + "\""); - } - - data[config](); - } - }); - }; - - _createClass(ScrollSpy, null, [{ - key: "Default", - get: function get() { - return Default$6; - } - }, { - key: "DATA_KEY", - get: function get() { - return DATA_KEY$8; - } - }]); - - return ScrollSpy; - }(BaseComponent); - /** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ - - - EventHandler.on(window, EVENT_LOAD_DATA_API$1, function () { - SelectorEngine.find(SELECTOR_DATA_SPY).forEach(function (spy) { - return new ScrollSpy(spy, Manipulator.getDataAttributes(spy)); - }); - }); - /** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - * add .ScrollSpy to jQuery only if jQuery is present - */ - - onDOMContentLoaded(function () { - var $ = getjQuery(); - /* istanbul ignore if */ - - if ($) { - var JQUERY_NO_CONFLICT = $.fn[NAME$8]; - $.fn[NAME$8] = ScrollSpy.jQueryInterface; - $.fn[NAME$8].Constructor = ScrollSpy; - - $.fn[NAME$8].noConflict = function () { - $.fn[NAME$8] = JQUERY_NO_CONFLICT; - return ScrollSpy.jQueryInterface; - }; - } - }); - - /** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - - var NAME$9 = 'tab'; - var DATA_KEY$9 = 'bs.tab'; - var EVENT_KEY$9 = "." + DATA_KEY$9; - var DATA_API_KEY$7 = '.data-api'; - var EVENT_HIDE$3 = "hide" + EVENT_KEY$9; - var EVENT_HIDDEN$3 = "hidden" + EVENT_KEY$9; - var EVENT_SHOW$3 = "show" + EVENT_KEY$9; - var EVENT_SHOWN$3 = "shown" + EVENT_KEY$9; - var EVENT_CLICK_DATA_API$6 = "click" + EVENT_KEY$9 + DATA_API_KEY$7; - var CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu'; - var CLASS_NAME_ACTIVE$3 = 'active'; - var CLASS_NAME_DISABLED$1 = 'disabled'; - var CLASS_NAME_FADE$3 = 'fade'; - var CLASS_NAME_SHOW$5 = 'show'; - var SELECTOR_DROPDOWN$1 = '.dropdown'; - var SELECTOR_NAV_LIST_GROUP$1 = '.nav, .list-group'; - var SELECTOR_ACTIVE$1 = '.active'; - var SELECTOR_ACTIVE_UL = ':scope > li > .active'; - var SELECTOR_DATA_TOGGLE$4 = '[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]'; - var SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle'; - var SELECTOR_DROPDOWN_ACTIVE_CHILD = ':scope > .dropdown-menu .active'; - /** - * ------------------------------------------------------------------------ - * Class Definition - * ------------------------------------------------------------------------ - */ - - var Tab = /*#__PURE__*/function (_BaseComponent) { - _inheritsLoose(Tab, _BaseComponent); - - function Tab() { - return _BaseComponent.apply(this, arguments) || this; - } - - var _proto = Tab.prototype; - - // Public - _proto.show = function show() { - var _this = this; - - if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && this._element.classList.contains(CLASS_NAME_ACTIVE$3) || this._element.classList.contains(CLASS_NAME_DISABLED$1)) { - return; - } - - var previous; - var target = getElementFromSelector(this._element); - - var listElement = this._element.closest(SELECTOR_NAV_LIST_GROUP$1); - - if (listElement) { - var itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE$1; - previous = SelectorEngine.find(itemSelector, listElement); - previous = previous[previous.length - 1]; - } - - var hideEvent = null; - - if (previous) { - hideEvent = EventHandler.trigger(previous, EVENT_HIDE$3, { - relatedTarget: this._element - }); - } - - var showEvent = EventHandler.trigger(this._element, EVENT_SHOW$3, { - relatedTarget: previous - }); - - if (showEvent.defaultPrevented || hideEvent !== null && hideEvent.defaultPrevented) { - return; - } - - this._activate(this._element, listElement); - - var complete = function complete() { - EventHandler.trigger(previous, EVENT_HIDDEN$3, { - relatedTarget: _this._element - }); - EventHandler.trigger(_this._element, EVENT_SHOWN$3, { - relatedTarget: previous - }); - }; - - if (target) { - this._activate(target, target.parentNode, complete); - } else { - complete(); - } - } // Private - ; - - _proto._activate = function _activate(element, container, callback) { - var _this2 = this; - - var activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ? SelectorEngine.find(SELECTOR_ACTIVE_UL, container) : SelectorEngine.children(container, SELECTOR_ACTIVE$1); - var active = activeElements[0]; - var isTransitioning = callback && active && active.classList.contains(CLASS_NAME_FADE$3); - - var complete = function complete() { - return _this2._transitionComplete(element, active, callback); - }; - - if (active && isTransitioning) { - var transitionDuration = getTransitionDurationFromElement(active); - active.classList.remove(CLASS_NAME_SHOW$5); - EventHandler.one(active, TRANSITION_END, complete); - emulateTransitionEnd(active, transitionDuration); - } else { - complete(); - } - }; - - _proto._transitionComplete = function _transitionComplete(element, active, callback) { - if (active) { - active.classList.remove(CLASS_NAME_ACTIVE$3); - var dropdownChild = SelectorEngine.findOne(SELECTOR_DROPDOWN_ACTIVE_CHILD, active.parentNode); - - if (dropdownChild) { - dropdownChild.classList.remove(CLASS_NAME_ACTIVE$3); - } - - if (active.getAttribute('role') === 'tab') { - active.setAttribute('aria-selected', false); - } - } - - element.classList.add(CLASS_NAME_ACTIVE$3); - - if (element.getAttribute('role') === 'tab') { - element.setAttribute('aria-selected', true); - } - - reflow(element); - - if (element.classList.contains(CLASS_NAME_FADE$3)) { - element.classList.add(CLASS_NAME_SHOW$5); - } - - if (element.parentNode && element.parentNode.classList.contains(CLASS_NAME_DROPDOWN_MENU)) { - var dropdownElement = element.closest(SELECTOR_DROPDOWN$1); - - if (dropdownElement) { - SelectorEngine.find(SELECTOR_DROPDOWN_TOGGLE$1).forEach(function (dropdown) { - return dropdown.classList.add(CLASS_NAME_ACTIVE$3); - }); - } - - element.setAttribute('aria-expanded', true); - } - - if (callback) { - callback(); - } - } // Static - ; - - Tab.jQueryInterface = function jQueryInterface(config) { - return this.each(function () { - var data = Data.getData(this, DATA_KEY$9) || new Tab(this); - - if (typeof config === 'string') { - if (typeof data[config] === 'undefined') { - throw new TypeError("No method named \"" + config + "\""); - } - - data[config](); - } - }); - }; - - _createClass(Tab, null, [{ - key: "DATA_KEY", - // Getters - get: function get() { - return DATA_KEY$9; - } - }]); - - return Tab; - }(BaseComponent); - /** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ - - - EventHandler.on(document, EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$4, function (event) { - event.preventDefault(); - var data = Data.getData(this, DATA_KEY$9) || new Tab(this); - data.show(); - }); - /** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - * add .Tab to jQuery only if jQuery is present - */ - - onDOMContentLoaded(function () { - var $ = getjQuery(); - /* istanbul ignore if */ - - if ($) { - var JQUERY_NO_CONFLICT = $.fn[NAME$9]; - $.fn[NAME$9] = Tab.jQueryInterface; - $.fn[NAME$9].Constructor = Tab; - - $.fn[NAME$9].noConflict = function () { - $.fn[NAME$9] = JQUERY_NO_CONFLICT; - return Tab.jQueryInterface; - }; - } - }); - - /** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - - var NAME$a = 'toast'; - var DATA_KEY$a = 'bs.toast'; - var EVENT_KEY$a = "." + DATA_KEY$a; - var EVENT_CLICK_DISMISS$1 = "click.dismiss" + EVENT_KEY$a; - var EVENT_HIDE$4 = "hide" + EVENT_KEY$a; - var EVENT_HIDDEN$4 = "hidden" + EVENT_KEY$a; - var EVENT_SHOW$4 = "show" + EVENT_KEY$a; - var EVENT_SHOWN$4 = "shown" + EVENT_KEY$a; - var CLASS_NAME_FADE$4 = 'fade'; - var CLASS_NAME_HIDE = 'hide'; - var CLASS_NAME_SHOW$6 = 'show'; - var CLASS_NAME_SHOWING = 'showing'; - var DefaultType$7 = { - animation: 'boolean', - autohide: 'boolean', - delay: 'number' - }; - var Default$7 = { - animation: true, - autohide: true, - delay: 5000 - }; - var SELECTOR_DATA_DISMISS$1 = '[data-bs-dismiss="toast"]'; - /** - * ------------------------------------------------------------------------ - * Class Definition - * ------------------------------------------------------------------------ - */ - - var Toast = /*#__PURE__*/function (_BaseComponent) { - _inheritsLoose(Toast, _BaseComponent); - - function Toast(element, config) { - var _this; - - _this = _BaseComponent.call(this, element) || this; - _this._config = _this._getConfig(config); - _this._timeout = null; - - _this._setListeners(); - - return _this; - } // Getters - - - var _proto = Toast.prototype; - - // Public - _proto.show = function show() { - var _this2 = this; - - var showEvent = EventHandler.trigger(this._element, EVENT_SHOW$4); - - if (showEvent.defaultPrevented) { - return; - } - - this._clearTimeout(); - - if (this._config.animation) { - this._element.classList.add(CLASS_NAME_FADE$4); - } - - var complete = function complete() { - _this2._element.classList.remove(CLASS_NAME_SHOWING); - - _this2._element.classList.add(CLASS_NAME_SHOW$6); - - EventHandler.trigger(_this2._element, EVENT_SHOWN$4); - - if (_this2._config.autohide) { - _this2._timeout = setTimeout(function () { - _this2.hide(); - }, _this2._config.delay); - } - }; - - this._element.classList.remove(CLASS_NAME_HIDE); - - reflow(this._element); - - this._element.classList.add(CLASS_NAME_SHOWING); - - if (this._config.animation) { - var transitionDuration = getTransitionDurationFromElement(this._element); - EventHandler.one(this._element, TRANSITION_END, complete); - emulateTransitionEnd(this._element, transitionDuration); - } else { - complete(); - } - }; - - _proto.hide = function hide() { - var _this3 = this; - - if (!this._element.classList.contains(CLASS_NAME_SHOW$6)) { - return; - } - - var hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$4); - - if (hideEvent.defaultPrevented) { - return; - } - - var complete = function complete() { - _this3._element.classList.add(CLASS_NAME_HIDE); - - EventHandler.trigger(_this3._element, EVENT_HIDDEN$4); - }; - - this._element.classList.remove(CLASS_NAME_SHOW$6); - - if (this._config.animation) { - var transitionDuration = getTransitionDurationFromElement(this._element); - EventHandler.one(this._element, TRANSITION_END, complete); - emulateTransitionEnd(this._element, transitionDuration); - } else { - complete(); - } - }; - - _proto.dispose = function dispose() { - this._clearTimeout(); - - if (this._element.classList.contains(CLASS_NAME_SHOW$6)) { - this._element.classList.remove(CLASS_NAME_SHOW$6); - } - - EventHandler.off(this._element, EVENT_CLICK_DISMISS$1); - - _BaseComponent.prototype.dispose.call(this); - - this._config = null; - } // Private - ; - - _proto._getConfig = function _getConfig(config) { - config = _extends({}, Default$7, Manipulator.getDataAttributes(this._element), typeof config === 'object' && config ? config : {}); - typeCheckConfig(NAME$a, config, this.constructor.DefaultType); - return config; - }; - - _proto._setListeners = function _setListeners() { - var _this4 = this; - - EventHandler.on(this._element, EVENT_CLICK_DISMISS$1, SELECTOR_DATA_DISMISS$1, function () { - return _this4.hide(); - }); - }; - - _proto._clearTimeout = function _clearTimeout() { - clearTimeout(this._timeout); - this._timeout = null; - } // Static - ; - - Toast.jQueryInterface = function jQueryInterface(config) { - return this.each(function () { - var data = Data.getData(this, DATA_KEY$a); - - var _config = typeof config === 'object' && config; - - if (!data) { - data = new Toast(this, _config); - } - - if (typeof config === 'string') { - if (typeof data[config] === 'undefined') { - throw new TypeError("No method named \"" + config + "\""); - } - - data[config](this); - } - }); - }; - - _createClass(Toast, null, [{ - key: "DefaultType", - get: function get() { - return DefaultType$7; - } - }, { - key: "Default", - get: function get() { - return Default$7; - } - }, { - key: "DATA_KEY", - get: function get() { - return DATA_KEY$a; - } - }]); - - return Toast; - }(BaseComponent); - /** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - * add .Toast to jQuery only if jQuery is present - */ - - - onDOMContentLoaded(function () { - var $ = getjQuery(); - /* istanbul ignore if */ - - if ($) { - var JQUERY_NO_CONFLICT = $.fn[NAME$a]; - $.fn[NAME$a] = Toast.jQueryInterface; - $.fn[NAME$a].Constructor = Toast; - - $.fn[NAME$a].noConflict = function () { - $.fn[NAME$a] = JQUERY_NO_CONFLICT; - return Toast.jQueryInterface; - }; - } - }); - - /** - * -------------------------------------------------------------------------- - * Bootstrap (v5.0.0-beta1): index.umd.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ - var index_umd = { - Alert: Alert, - Button: Button, - Carousel: Carousel, - Collapse: Collapse, - Dropdown: Dropdown, - Modal: Modal, - Popover: Popover, - ScrollSpy: ScrollSpy, - Tab: Tab, - Toast: Toast, - Tooltip: Tooltip - }; - - return index_umd; - -}))); -//# sourceMappingURL=bootstrap.bundle.js.map diff --git a/dist/js/bootstrap.bundle.js.map b/dist/js/bootstrap.bundle.js.map deleted file mode 100644 index ed9d1fcaa..000000000 --- a/dist/js/bootstrap.bundle.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"bootstrap.bundle.js","sources":["../../js/src/util/index.js","../../js/src/dom/data.js","../../js/src/dom/event-handler.js","../../js/src/base-component.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/dom/manipulator.js","../../js/src/dom/selector-engine.js","../../js/src/carousel.js","../../js/src/collapse.js","../../node_modules/@popperjs/core/lib/enums.js","../../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../../node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../../node_modules/@popperjs/core/lib/dom-utils/contains.js","../../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../../node_modules/@popperjs/core/lib/utils/within.js","../../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../../node_modules/@popperjs/core/lib/modifiers/arrow.js","../../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../../node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../../node_modules/@popperjs/core/lib/utils/getVariation.js","../../node_modules/@popperjs/core/lib/utils/computeOffsets.js","../../node_modules/@popperjs/core/lib/utils/detectOverflow.js","../../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../../node_modules/@popperjs/core/lib/modifiers/flip.js","../../node_modules/@popperjs/core/lib/modifiers/hide.js","../../node_modules/@popperjs/core/lib/modifiers/offset.js","../../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../../node_modules/@popperjs/core/lib/utils/getAltAxis.js","../../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../../node_modules/@popperjs/core/lib/utils/orderModifiers.js","../../node_modules/@popperjs/core/lib/utils/debounce.js","../../node_modules/@popperjs/core/lib/utils/mergeByName.js","../../node_modules/@popperjs/core/lib/createPopper.js","../../node_modules/@popperjs/core/lib/popper-lite.js","../../node_modules/@popperjs/core/lib/popper.js","../../js/src/dropdown.js","../../js/src/modal.js","../../js/src/util/sanitizer.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/toast.js","../../js/index.umd.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1000000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n// Shoutout AngusCroll (https://goo.gl/pxwQGp)\nconst toType = obj => {\n if (obj === null || obj === undefined) {\n return `${obj}`\n }\n\n return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\n/**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\nconst getUID = prefix => {\n do {\n prefix += Math.floor(Math.random() * MAX_UID)\n } while (document.getElementById(prefix))\n\n return prefix\n}\n\nconst getSelector = element => {\n let selector = element.getAttribute('data-bs-target')\n\n if (!selector || selector === '#') {\n const hrefAttr = element.getAttribute('href')\n\n selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null\n }\n\n return selector\n}\n\nconst getSelectorFromElement = element => {\n const selector = getSelector(element)\n\n if (selector) {\n return document.querySelector(selector) ? selector : null\n }\n\n return null\n}\n\nconst getElementFromSelector = element => {\n const selector = getSelector(element)\n\n return selector ? document.querySelector(selector) : null\n}\n\nconst getTransitionDurationFromElement = element => {\n if (!element) {\n return 0\n }\n\n // Get transition-duration of the element\n let { transitionDuration, transitionDelay } = window.getComputedStyle(element)\n\n const floatTransitionDuration = Number.parseFloat(transitionDuration)\n const floatTransitionDelay = Number.parseFloat(transitionDelay)\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0]\n transitionDelay = transitionDelay.split(',')[0]\n\n return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = element => {\n element.dispatchEvent(new Event(TRANSITION_END))\n}\n\nconst isElement = obj => (obj[0] || obj).nodeType\n\nconst emulateTransitionEnd = (element, duration) => {\n let called = false\n const durationPadding = 5\n const emulatedDuration = duration + durationPadding\n\n function listener() {\n called = true\n element.removeEventListener(TRANSITION_END, listener)\n }\n\n element.addEventListener(TRANSITION_END, listener)\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(element)\n }\n }, emulatedDuration)\n}\n\nconst typeCheckConfig = (componentName, config, configTypes) => {\n Object.keys(configTypes).forEach(property => {\n const expectedTypes = configTypes[property]\n const value = config[property]\n const valueType = value && isElement(value) ?\n 'element' :\n toType(value)\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new Error(\n `${componentName.toUpperCase()}: ` +\n `Option \"${property}\" provided type \"${valueType}\" ` +\n `but expected type \"${expectedTypes}\".`)\n }\n })\n}\n\nconst isVisible = element => {\n if (!element) {\n return false\n }\n\n if (element.style && element.parentNode && element.parentNode.style) {\n const elementStyle = getComputedStyle(element)\n const parentNodeStyle = getComputedStyle(element.parentNode)\n\n return elementStyle.display !== 'none' &&\n parentNodeStyle.display !== 'none' &&\n elementStyle.visibility !== 'hidden'\n }\n\n return false\n}\n\nconst findShadowRoot = element => {\n if (!document.documentElement.attachShadow) {\n return null\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode()\n return root instanceof ShadowRoot ? root : null\n }\n\n if (element instanceof ShadowRoot) {\n return element\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null\n }\n\n return findShadowRoot(element.parentNode)\n}\n\nconst noop = () => function () {}\n\nconst reflow = element => element.offsetHeight\n\nconst getjQuery = () => {\n const { jQuery } = window\n\n if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n return jQuery\n }\n\n return null\n}\n\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', callback)\n } else {\n callback()\n }\n}\n\nconst isRTL = document.documentElement.dir === 'rtl'\n\nexport {\n TRANSITION_END,\n getUID,\n getSelectorFromElement,\n getElementFromSelector,\n getTransitionDurationFromElement,\n triggerTransitionEnd,\n isElement,\n emulateTransitionEnd,\n typeCheckConfig,\n isVisible,\n findShadowRoot,\n noop,\n reflow,\n getjQuery,\n onDOMContentLoaded,\n isRTL\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst mapData = (() => {\n const storeData = {}\n let id = 1\n return {\n set(element, key, data) {\n if (typeof element.bsKey === 'undefined') {\n element.bsKey = {\n key,\n id\n }\n id++\n }\n\n storeData[element.bsKey.id] = data\n },\n get(element, key) {\n if (!element || typeof element.bsKey === 'undefined') {\n return null\n }\n\n const keyProperties = element.bsKey\n if (keyProperties.key === key) {\n return storeData[keyProperties.id]\n }\n\n return null\n },\n delete(element, key) {\n if (typeof element.bsKey === 'undefined') {\n return\n }\n\n const keyProperties = element.bsKey\n if (keyProperties.key === key) {\n delete storeData[keyProperties.id]\n delete element.bsKey\n }\n }\n }\n})()\n\nconst Data = {\n setData(instance, key, data) {\n mapData.set(instance, key, data)\n },\n getData(instance, key) {\n return mapData.get(instance, key)\n },\n removeData(instance, key) {\n mapData.delete(instance, key)\n }\n}\n\nexport default Data\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery } from '../util/index'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/\nconst stripNameRegex = /\\..*/\nconst stripUidRegex = /::\\d+$/\nconst eventRegistry = {} // Events storage\nlet uidEvent = 1\nconst customEvents = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout'\n}\nconst nativeEvents = new Set([\n 'click',\n 'dblclick',\n 'mouseup',\n 'mousedown',\n 'contextmenu',\n 'mousewheel',\n 'DOMMouseScroll',\n 'mouseover',\n 'mouseout',\n 'mousemove',\n 'selectstart',\n 'selectend',\n 'keydown',\n 'keypress',\n 'keyup',\n 'orientationchange',\n 'touchstart',\n 'touchmove',\n 'touchend',\n 'touchcancel',\n 'pointerdown',\n 'pointermove',\n 'pointerup',\n 'pointerleave',\n 'pointercancel',\n 'gesturestart',\n 'gesturechange',\n 'gestureend',\n 'focus',\n 'blur',\n 'change',\n 'reset',\n 'select',\n 'submit',\n 'focusin',\n 'focusout',\n 'load',\n 'unload',\n 'beforeunload',\n 'resize',\n 'move',\n 'DOMContentLoaded',\n 'readystatechange',\n 'error',\n 'abort',\n 'scroll'\n])\n\n/**\n * ------------------------------------------------------------------------\n * Private methods\n * ------------------------------------------------------------------------\n */\n\nfunction getUidEvent(element, uid) {\n return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\n}\n\nfunction getEvent(element) {\n const uid = getUidEvent(element)\n\n element.uidEvent = uid\n eventRegistry[uid] = eventRegistry[uid] || {}\n\n return eventRegistry[uid]\n}\n\nfunction bootstrapHandler(element, fn) {\n return function handler(event) {\n event.delegateTarget = element\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, fn)\n }\n\n return fn.apply(element, [event])\n }\n}\n\nfunction bootstrapDelegationHandler(element, selector, fn) {\n return function handler(event) {\n const domElements = element.querySelectorAll(selector)\n\n for (let { target } = event; target && target !== this; target = target.parentNode) {\n for (let i = domElements.length; i--;) {\n if (domElements[i] === target) {\n event.delegateTarget = target\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, fn)\n }\n\n return fn.apply(target, [event])\n }\n }\n }\n\n // To please ESLint\n return null\n }\n}\n\nfunction findHandler(events, handler, delegationSelector = null) {\n const uidEventList = Object.keys(events)\n\n for (let i = 0, len = uidEventList.length; i < len; i++) {\n const event = events[uidEventList[i]]\n\n if (event.originalHandler === handler && event.delegationSelector === delegationSelector) {\n return event\n }\n }\n\n return null\n}\n\nfunction normalizeParams(originalTypeEvent, handler, delegationFn) {\n const delegation = typeof handler === 'string'\n const originalHandler = delegation ? delegationFn : handler\n\n // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n let typeEvent = originalTypeEvent.replace(stripNameRegex, '')\n const custom = customEvents[typeEvent]\n\n if (custom) {\n typeEvent = custom\n }\n\n const isNative = nativeEvents.has(typeEvent)\n\n if (!isNative) {\n typeEvent = originalTypeEvent\n }\n\n return [delegation, originalHandler, typeEvent]\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFn, oneOff) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n if (!handler) {\n handler = delegationFn\n delegationFn = null\n }\n\n const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn)\n const events = getEvent(element)\n const handlers = events[typeEvent] || (events[typeEvent] = {})\n const previousFn = findHandler(handlers, originalHandler, delegation ? handler : null)\n\n if (previousFn) {\n previousFn.oneOff = previousFn.oneOff && oneOff\n\n return\n }\n\n const uid = getUidEvent(originalHandler, originalTypeEvent.replace(namespaceRegex, ''))\n const fn = delegation ?\n bootstrapDelegationHandler(element, handler, delegationFn) :\n bootstrapHandler(element, handler)\n\n fn.delegationSelector = delegation ? handler : null\n fn.originalHandler = originalHandler\n fn.oneOff = oneOff\n fn.uidEvent = uid\n handlers[uid] = fn\n\n element.addEventListener(typeEvent, fn, delegation)\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n const fn = findHandler(events[typeEvent], handler, delegationSelector)\n\n if (!fn) {\n return\n }\n\n element.removeEventListener(typeEvent, fn, Boolean(delegationSelector))\n delete events[typeEvent][fn.uidEvent]\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n const storeElementEvent = events[typeEvent] || {}\n\n Object.keys(storeElementEvent).forEach(handlerKey => {\n if (handlerKey.includes(namespace)) {\n const event = storeElementEvent[handlerKey]\n\n removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector)\n }\n })\n}\n\nconst EventHandler = {\n on(element, event, handler, delegationFn) {\n addHandler(element, event, handler, delegationFn, false)\n },\n\n one(element, event, handler, delegationFn) {\n addHandler(element, event, handler, delegationFn, true)\n },\n\n off(element, originalTypeEvent, handler, delegationFn) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn)\n const inNamespace = typeEvent !== originalTypeEvent\n const events = getEvent(element)\n const isNamespace = originalTypeEvent.startsWith('.')\n\n if (typeof originalHandler !== 'undefined') {\n // Simplest case: handler is passed, remove that listener ONLY.\n if (!events || !events[typeEvent]) {\n return\n }\n\n removeHandler(element, events, typeEvent, originalHandler, delegation ? handler : null)\n return\n }\n\n if (isNamespace) {\n Object.keys(events).forEach(elementEvent => {\n removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\n })\n }\n\n const storeElementEvent = events[typeEvent] || {}\n Object.keys(storeElementEvent).forEach(keyHandlers => {\n const handlerKey = keyHandlers.replace(stripUidRegex, '')\n\n if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n const event = storeElementEvent[keyHandlers]\n\n removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector)\n }\n })\n },\n\n trigger(element, event, args) {\n if (typeof event !== 'string' || !element) {\n return null\n }\n\n const $ = getjQuery()\n const typeEvent = event.replace(stripNameRegex, '')\n const inNamespace = event !== typeEvent\n const isNative = nativeEvents.has(typeEvent)\n\n let jQueryEvent\n let bubbles = true\n let nativeDispatch = true\n let defaultPrevented = false\n let evt = null\n\n if (inNamespace && $) {\n jQueryEvent = $.Event(event, args)\n\n $(element).trigger(jQueryEvent)\n bubbles = !jQueryEvent.isPropagationStopped()\n nativeDispatch = !jQueryEvent.isImmediatePropagationStopped()\n defaultPrevented = jQueryEvent.isDefaultPrevented()\n }\n\n if (isNative) {\n evt = document.createEvent('HTMLEvents')\n evt.initEvent(typeEvent, bubbles, true)\n } else {\n evt = new CustomEvent(event, {\n bubbles,\n cancelable: true\n })\n }\n\n // merge custom information in our event\n if (typeof args !== 'undefined') {\n Object.keys(args).forEach(key => {\n Object.defineProperty(evt, key, {\n get() {\n return args[key]\n }\n })\n })\n }\n\n if (defaultPrevented) {\n evt.preventDefault()\n }\n\n if (nativeDispatch) {\n element.dispatchEvent(evt)\n }\n\n if (evt.defaultPrevented && typeof jQueryEvent !== 'undefined') {\n jQueryEvent.preventDefault()\n }\n\n return evt\n }\n}\n\nexport default EventHandler\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst VERSION = '5.0.0-beta1'\n\nclass BaseComponent {\n constructor(element) {\n if (!element) {\n return\n }\n\n this._element = element\n Data.setData(element, this.constructor.DATA_KEY, this)\n }\n\n dispose() {\n Data.removeData(this._element, this.constructor.DATA_KEY)\n this._element = null\n }\n\n /** Static */\n\n static getInstance(element) {\n return Data.getData(element, this.DATA_KEY)\n }\n\n static get VERSION() {\n return VERSION\n }\n}\n\nexport default BaseComponent\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n getjQuery,\n onDOMContentLoaded,\n TRANSITION_END,\n emulateTransitionEnd,\n getElementFromSelector,\n getTransitionDurationFromElement\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'alert'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst SELECTOR_DISMISS = '[data-bs-dismiss=\"alert\"]'\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`\nconst EVENT_CLOSED = `closed${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASSNAME_ALERT = 'alert'\nconst CLASSNAME_FADE = 'fade'\nconst CLASSNAME_SHOW = 'show'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Alert extends BaseComponent {\n // Getters\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n close(element) {\n const rootElement = element ? this._getRootElement(element) : this._element\n const customEvent = this._triggerCloseEvent(rootElement)\n\n if (customEvent === null || customEvent.defaultPrevented) {\n return\n }\n\n this._removeElement(rootElement)\n }\n\n // Private\n\n _getRootElement(element) {\n return getElementFromSelector(element) || element.closest(`.${CLASSNAME_ALERT}`)\n }\n\n _triggerCloseEvent(element) {\n return EventHandler.trigger(element, EVENT_CLOSE)\n }\n\n _removeElement(element) {\n element.classList.remove(CLASSNAME_SHOW)\n\n if (!element.classList.contains(CLASSNAME_FADE)) {\n this._destroyElement(element)\n return\n }\n\n const transitionDuration = getTransitionDurationFromElement(element)\n\n EventHandler.one(element, TRANSITION_END, () => this._destroyElement(element))\n emulateTransitionEnd(element, transitionDuration)\n }\n\n _destroyElement(element) {\n if (element.parentNode) {\n element.parentNode.removeChild(element)\n }\n\n EventHandler.trigger(element, EVENT_CLOSED)\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY)\n\n if (!data) {\n data = new Alert(this)\n }\n\n if (config === 'close') {\n data[config](this)\n }\n })\n }\n\n static handleDismiss(alertInstance) {\n return function (event) {\n if (event) {\n event.preventDefault()\n }\n\n alertInstance.close(this)\n }\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DISMISS, Alert.handleDismiss(new Alert()))\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Alert to jQuery only if jQuery is present\n */\n\nonDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Alert.jQueryInterface\n $.fn[NAME].Constructor = Alert\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Alert.jQueryInterface\n }\n }\n})\n\nexport default Alert\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery, onDOMContentLoaded } from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'button'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"button\"]'\n\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Button extends BaseComponent {\n // Getters\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n toggle() {\n // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE))\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY)\n\n if (!data) {\n data = new Button(this)\n }\n\n if (config === 'toggle') {\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, event => {\n event.preventDefault()\n\n const button = event.target.closest(SELECTOR_DATA_TOGGLE)\n\n let data = Data.getData(button, DATA_KEY)\n if (!data) {\n data = new Button(button)\n }\n\n data.toggle()\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Button to jQuery only if jQuery is present\n */\n\nonDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Button.jQueryInterface\n $.fn[NAME].Constructor = Button\n\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Button.jQueryInterface\n }\n }\n})\n\nexport default Button\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(val) {\n if (val === 'true') {\n return true\n }\n\n if (val === 'false') {\n return false\n }\n\n if (val === Number(val).toString()) {\n return Number(val)\n }\n\n if (val === '' || val === 'null') {\n return null\n }\n\n return val\n}\n\nfunction normalizeDataKey(key) {\n return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`)\n}\n\nconst Manipulator = {\n setDataAttribute(element, key, value) {\n element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value)\n },\n\n removeDataAttribute(element, key) {\n element.removeAttribute(`data-bs-${normalizeDataKey(key)}`)\n },\n\n getDataAttributes(element) {\n if (!element) {\n return {}\n }\n\n const attributes = {}\n\n Object.keys(element.dataset)\n .filter(key => key.startsWith('bs'))\n .forEach(key => {\n let pureKey = key.replace(/^bs/, '')\n pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length)\n attributes[pureKey] = normalizeData(element.dataset[key])\n })\n\n return attributes\n },\n\n getDataAttribute(element, key) {\n return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`))\n },\n\n offset(element) {\n const rect = element.getBoundingClientRect()\n\n return {\n top: rect.top + document.body.scrollTop,\n left: rect.left + document.body.scrollLeft\n }\n },\n\n position(element) {\n return {\n top: element.offsetTop,\n left: element.offsetLeft\n }\n }\n}\n\nexport default Manipulator\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NODE_TEXT = 3\n\nconst SelectorEngine = {\n matches(element, selector) {\n return element.matches(selector)\n },\n\n find(selector, element = document.documentElement) {\n return [].concat(...Element.prototype.querySelectorAll.call(element, selector))\n },\n\n findOne(selector, element = document.documentElement) {\n return Element.prototype.querySelector.call(element, selector)\n },\n\n children(element, selector) {\n const children = [].concat(...element.children)\n\n return children.filter(child => child.matches(selector))\n },\n\n parents(element, selector) {\n const parents = []\n\n let ancestor = element.parentNode\n\n while (ancestor && ancestor.nodeType === Node.ELEMENT_NODE && ancestor.nodeType !== NODE_TEXT) {\n if (this.matches(ancestor, selector)) {\n parents.push(ancestor)\n }\n\n ancestor = ancestor.parentNode\n }\n\n return parents\n },\n\n prev(element, selector) {\n let previous = element.previousElementSibling\n\n while (previous) {\n if (previous.matches(selector)) {\n return [previous]\n }\n\n previous = previous.previousElementSibling\n }\n\n return []\n },\n\n next(element, selector) {\n let next = element.nextElementSibling\n\n while (next) {\n if (this.matches(next, selector)) {\n return [next]\n }\n\n next = next.nextElementSibling\n }\n\n return []\n }\n}\n\nexport default SelectorEngine\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n getjQuery,\n onDOMContentLoaded,\n TRANSITION_END,\n emulateTransitionEnd,\n getElementFromSelector,\n getTransitionDurationFromElement,\n isVisible,\n reflow,\n triggerTransitionEnd,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'carousel'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n interval: 5000,\n keyboard: true,\n slide: false,\n pause: 'hover',\n wrap: true,\n touch: true\n}\n\nconst DefaultType = {\n interval: '(number|boolean)',\n keyboard: 'boolean',\n slide: '(boolean|string)',\n pause: '(string|boolean)',\n wrap: 'boolean',\n touch: 'boolean'\n}\n\nconst DIRECTION_NEXT = 'next'\nconst DIRECTION_PREV = 'prev'\nconst DIRECTION_LEFT = 'left'\nconst DIRECTION_RIGHT = 'right'\n\nconst EVENT_SLIDE = `slide${EVENT_KEY}`\nconst EVENT_SLID = `slid${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY}`\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_CAROUSEL = 'carousel'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_SLIDE = 'slide'\nconst CLASS_NAME_END = 'carousel-item-end'\nconst CLASS_NAME_START = 'carousel-item-start'\nconst CLASS_NAME_NEXT = 'carousel-item-next'\nconst CLASS_NAME_PREV = 'carousel-item-prev'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\n\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ACTIVE_ITEM = '.active.carousel-item'\nconst SELECTOR_ITEM = '.carousel-item'\nconst SELECTOR_ITEM_IMG = '.carousel-item img'\nconst SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]'\n\nconst PointerType = {\n TOUCH: 'touch',\n PEN: 'pen'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\nclass Carousel extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._items = null\n this._interval = null\n this._activeElement = null\n this._isPaused = false\n this._isSliding = false\n this.touchTimeout = null\n this.touchStartX = 0\n this.touchDeltaX = 0\n\n this._config = this._getConfig(config)\n this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n this._pointerEvent = Boolean(window.PointerEvent)\n\n this._addEventListeners()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n next() {\n if (!this._isSliding) {\n this._slide(DIRECTION_NEXT)\n }\n }\n\n nextWhenVisible() {\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden && isVisible(this._element)) {\n this.next()\n }\n }\n\n prev() {\n if (!this._isSliding) {\n this._slide(DIRECTION_PREV)\n }\n }\n\n pause(event) {\n if (!event) {\n this._isPaused = true\n }\n\n if (SelectorEngine.findOne(SELECTOR_NEXT_PREV, this._element)) {\n triggerTransitionEnd(this._element)\n this.cycle(true)\n }\n\n clearInterval(this._interval)\n this._interval = null\n }\n\n cycle(event) {\n if (!event) {\n this._isPaused = false\n }\n\n if (this._interval) {\n clearInterval(this._interval)\n this._interval = null\n }\n\n if (this._config && this._config.interval && !this._isPaused) {\n this._updateInterval()\n\n this._interval = setInterval(\n (document.visibilityState ? this.nextWhenVisible : this.next).bind(this),\n this._config.interval\n )\n }\n }\n\n to(index) {\n this._activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n const activeIndex = this._getItemIndex(this._activeElement)\n\n if (index > this._items.length - 1 || index < 0) {\n return\n }\n\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.to(index))\n return\n }\n\n if (activeIndex === index) {\n this.pause()\n this.cycle()\n return\n }\n\n const direction = index > activeIndex ?\n DIRECTION_NEXT :\n DIRECTION_PREV\n\n this._slide(direction, this._items[index])\n }\n\n dispose() {\n super.dispose()\n EventHandler.off(this._element, EVENT_KEY)\n\n this._items = null\n this._config = null\n this._interval = null\n this._isPaused = null\n this._isSliding = null\n this._activeElement = null\n this._indicatorsElement = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _handleSwipe() {\n const absDeltax = Math.abs(this.touchDeltaX)\n\n if (absDeltax <= SWIPE_THRESHOLD) {\n return\n }\n\n const direction = absDeltax / this.touchDeltaX\n\n this.touchDeltaX = 0\n\n // swipe left\n if (direction > 0) {\n this.prev()\n }\n\n // swipe right\n if (direction < 0) {\n this.next()\n }\n }\n\n _addEventListeners() {\n if (this._config.keyboard) {\n EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n }\n\n if (this._config.pause === 'hover') {\n EventHandler.on(this._element, EVENT_MOUSEENTER, event => this.pause(event))\n EventHandler.on(this._element, EVENT_MOUSELEAVE, event => this.cycle(event))\n }\n\n if (this._config.touch && this._touchSupported) {\n this._addTouchEventListeners()\n }\n }\n\n _addTouchEventListeners() {\n const start = event => {\n if (this._pointerEvent && PointerType[event.pointerType.toUpperCase()]) {\n this.touchStartX = event.clientX\n } else if (!this._pointerEvent) {\n this.touchStartX = event.touches[0].clientX\n }\n }\n\n const move = event => {\n // ensure swiping with one touch and not pinching\n if (event.touches && event.touches.length > 1) {\n this.touchDeltaX = 0\n } else {\n this.touchDeltaX = event.touches[0].clientX - this.touchStartX\n }\n }\n\n const end = event => {\n if (this._pointerEvent && PointerType[event.pointerType.toUpperCase()]) {\n this.touchDeltaX = event.clientX - this.touchStartX\n }\n\n this._handleSwipe()\n if (this._config.pause === 'hover') {\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n\n this.pause()\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout)\n }\n\n this.touchTimeout = setTimeout(event => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n }\n }\n\n SelectorEngine.find(SELECTOR_ITEM_IMG, this._element).forEach(itemImg => {\n EventHandler.on(itemImg, EVENT_DRAG_START, e => e.preventDefault())\n })\n\n if (this._pointerEvent) {\n EventHandler.on(this._element, EVENT_POINTERDOWN, event => start(event))\n EventHandler.on(this._element, EVENT_POINTERUP, event => end(event))\n\n this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n } else {\n EventHandler.on(this._element, EVENT_TOUCHSTART, event => start(event))\n EventHandler.on(this._element, EVENT_TOUCHMOVE, event => move(event))\n EventHandler.on(this._element, EVENT_TOUCHEND, event => end(event))\n }\n }\n\n _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return\n }\n\n switch (event.key) {\n case ARROW_LEFT_KEY:\n event.preventDefault()\n this.prev()\n break\n case ARROW_RIGHT_KEY:\n event.preventDefault()\n this.next()\n break\n default:\n }\n }\n\n _getItemIndex(element) {\n this._items = element && element.parentNode ?\n SelectorEngine.find(SELECTOR_ITEM, element.parentNode) :\n []\n\n return this._items.indexOf(element)\n }\n\n _getItemByDirection(direction, activeElement) {\n const isNextDirection = direction === DIRECTION_NEXT\n const isPrevDirection = direction === DIRECTION_PREV\n const activeIndex = this._getItemIndex(activeElement)\n const lastItemIndex = this._items.length - 1\n const isGoingToWrap = (isPrevDirection && activeIndex === 0) ||\n (isNextDirection && activeIndex === lastItemIndex)\n\n if (isGoingToWrap && !this._config.wrap) {\n return activeElement\n }\n\n const delta = direction === DIRECTION_PREV ? -1 : 1\n const itemIndex = (activeIndex + delta) % this._items.length\n\n return itemIndex === -1 ?\n this._items[this._items.length - 1] :\n this._items[itemIndex]\n }\n\n _triggerSlideEvent(relatedTarget, eventDirectionName) {\n const targetIndex = this._getItemIndex(relatedTarget)\n const fromIndex = this._getItemIndex(SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element))\n\n return EventHandler.trigger(this._element, EVENT_SLIDE, {\n relatedTarget,\n direction: eventDirectionName,\n from: fromIndex,\n to: targetIndex\n })\n }\n\n _setActiveIndicatorElement(element) {\n if (this._indicatorsElement) {\n const indicators = SelectorEngine.find(SELECTOR_ACTIVE, this._indicatorsElement)\n\n for (let i = 0; i < indicators.length; i++) {\n indicators[i].classList.remove(CLASS_NAME_ACTIVE)\n }\n\n const nextIndicator = this._indicatorsElement.children[\n this._getItemIndex(element)\n ]\n\n if (nextIndicator) {\n nextIndicator.classList.add(CLASS_NAME_ACTIVE)\n }\n }\n }\n\n _updateInterval() {\n const element = this._activeElement || SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n\n if (!element) {\n return\n }\n\n const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10)\n\n if (elementInterval) {\n this._config.defaultInterval = this._config.defaultInterval || this._config.interval\n this._config.interval = elementInterval\n } else {\n this._config.interval = this._config.defaultInterval || this._config.interval\n }\n }\n\n _slide(direction, element) {\n const activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n const activeElementIndex = this._getItemIndex(activeElement)\n const nextElement = element || (activeElement && this._getItemByDirection(direction, activeElement))\n\n const nextElementIndex = this._getItemIndex(nextElement)\n const isCycling = Boolean(this._interval)\n\n let directionalClassName\n let orderClassName\n let eventDirectionName\n\n if (direction === DIRECTION_NEXT) {\n directionalClassName = CLASS_NAME_START\n orderClassName = CLASS_NAME_NEXT\n eventDirectionName = DIRECTION_LEFT\n } else {\n directionalClassName = CLASS_NAME_END\n orderClassName = CLASS_NAME_PREV\n eventDirectionName = DIRECTION_RIGHT\n }\n\n if (nextElement && nextElement.classList.contains(CLASS_NAME_ACTIVE)) {\n this._isSliding = false\n return\n }\n\n const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName)\n if (slideEvent.defaultPrevented) {\n return\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n return\n }\n\n this._isSliding = true\n\n if (isCycling) {\n this.pause()\n }\n\n this._setActiveIndicatorElement(nextElement)\n this._activeElement = nextElement\n\n if (this._element.classList.contains(CLASS_NAME_SLIDE)) {\n nextElement.classList.add(orderClassName)\n\n reflow(nextElement)\n\n activeElement.classList.add(directionalClassName)\n nextElement.classList.add(directionalClassName)\n\n const transitionDuration = getTransitionDurationFromElement(activeElement)\n\n EventHandler.one(activeElement, TRANSITION_END, () => {\n nextElement.classList.remove(directionalClassName, orderClassName)\n nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n activeElement.classList.remove(CLASS_NAME_ACTIVE, orderClassName, directionalClassName)\n\n this._isSliding = false\n\n setTimeout(() => {\n EventHandler.trigger(this._element, EVENT_SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n })\n }, 0)\n })\n\n emulateTransitionEnd(activeElement, transitionDuration)\n } else {\n activeElement.classList.remove(CLASS_NAME_ACTIVE)\n nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n this._isSliding = false\n EventHandler.trigger(this._element, EVENT_SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n })\n }\n\n if (isCycling) {\n this.cycle()\n }\n }\n\n // Static\n\n static carouselInterface(element, config) {\n let data = Data.getData(element, DATA_KEY)\n let _config = {\n ...Default,\n ...Manipulator.getDataAttributes(element)\n }\n\n if (typeof config === 'object') {\n _config = {\n ..._config,\n ...config\n }\n }\n\n const action = typeof config === 'string' ? config : _config.slide\n\n if (!data) {\n data = new Carousel(element, _config)\n }\n\n if (typeof config === 'number') {\n data.to(config)\n } else if (typeof action === 'string') {\n if (typeof data[action] === 'undefined') {\n throw new TypeError(`No method named \"${action}\"`)\n }\n\n data[action]()\n } else if (_config.interval && _config.ride) {\n data.pause()\n data.cycle()\n }\n }\n\n static jQueryInterface(config) {\n return this.each(function () {\n Carousel.carouselInterface(this, config)\n })\n }\n\n static dataApiClickHandler(event) {\n const target = getElementFromSelector(this)\n\n if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n return\n }\n\n const config = {\n ...Manipulator.getDataAttributes(target),\n ...Manipulator.getDataAttributes(this)\n }\n const slideIndex = this.getAttribute('data-bs-slide-to')\n\n if (slideIndex) {\n config.interval = false\n }\n\n Carousel.carouselInterface(target, config)\n\n if (slideIndex) {\n Data.getData(target, DATA_KEY).to(slideIndex)\n }\n\n event.preventDefault()\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, Carousel.dataApiClickHandler)\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE)\n\n for (let i = 0, len = carousels.length; i < len; i++) {\n Carousel.carouselInterface(carousels[i], Data.getData(carousels[i], DATA_KEY))\n }\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Carousel to jQuery only if jQuery is present\n */\n\nonDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Carousel.jQueryInterface\n $.fn[NAME].Constructor = Carousel\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Carousel.jQueryInterface\n }\n }\n})\n\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n getjQuery,\n onDOMContentLoaded,\n TRANSITION_END,\n emulateTransitionEnd,\n getSelectorFromElement,\n getElementFromSelector,\n getTransitionDurationFromElement,\n isElement,\n reflow,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'collapse'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst Default = {\n toggle: true,\n parent: ''\n}\n\nconst DefaultType = {\n toggle: 'boolean',\n parent: '(string|element)'\n}\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_COLLAPSE = 'collapse'\nconst CLASS_NAME_COLLAPSING = 'collapsing'\nconst CLASS_NAME_COLLAPSED = 'collapsed'\n\nconst WIDTH = 'width'\nconst HEIGHT = 'height'\n\nconst SELECTOR_ACTIVES = '.show, .collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"collapse\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Collapse extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._isTransitioning = false\n this._config = this._getConfig(config)\n this._triggerArray = SelectorEngine.find(\n `${SELECTOR_DATA_TOGGLE}[href=\"#${element.id}\"],` +\n `${SELECTOR_DATA_TOGGLE}[data-bs-target=\"#${element.id}\"]`\n )\n\n const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n for (let i = 0, len = toggleList.length; i < len; i++) {\n const elem = toggleList[i]\n const selector = getSelectorFromElement(elem)\n const filterElement = SelectorEngine.find(selector)\n .filter(foundElem => foundElem === element)\n\n if (selector !== null && filterElement.length) {\n this._selector = selector\n this._triggerArray.push(elem)\n }\n }\n\n this._parent = this._config.parent ? this._getParent() : null\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._element, this._triggerArray)\n }\n\n if (this._config.toggle) {\n this.toggle()\n }\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n toggle() {\n if (this._element.classList.contains(CLASS_NAME_SHOW)) {\n this.hide()\n } else {\n this.show()\n }\n }\n\n show() {\n if (this._isTransitioning || this._element.classList.contains(CLASS_NAME_SHOW)) {\n return\n }\n\n let actives\n let activesData\n\n if (this._parent) {\n actives = SelectorEngine.find(SELECTOR_ACTIVES, this._parent)\n .filter(elem => {\n if (typeof this._config.parent === 'string') {\n return elem.getAttribute('data-bs-parent') === this._config.parent\n }\n\n return elem.classList.contains(CLASS_NAME_COLLAPSE)\n })\n\n if (actives.length === 0) {\n actives = null\n }\n }\n\n const container = SelectorEngine.findOne(this._selector)\n if (actives) {\n const tempActiveData = actives.find(elem => container !== elem)\n activesData = tempActiveData ? Data.getData(tempActiveData, DATA_KEY) : null\n\n if (activesData && activesData._isTransitioning) {\n return\n }\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n if (startEvent.defaultPrevented) {\n return\n }\n\n if (actives) {\n actives.forEach(elemActive => {\n if (container !== elemActive) {\n Collapse.collapseInterface(elemActive, 'hide')\n }\n\n if (!activesData) {\n Data.setData(elemActive, DATA_KEY, null)\n }\n })\n }\n\n const dimension = this._getDimension()\n\n this._element.classList.remove(CLASS_NAME_COLLAPSE)\n this._element.classList.add(CLASS_NAME_COLLAPSING)\n\n this._element.style[dimension] = 0\n\n if (this._triggerArray.length) {\n this._triggerArray.forEach(element => {\n element.classList.remove(CLASS_NAME_COLLAPSED)\n element.setAttribute('aria-expanded', true)\n })\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n this._element.classList.remove(CLASS_NAME_COLLAPSING)\n this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n this._element.style[dimension] = ''\n\n this.setTransitioning(false)\n\n EventHandler.trigger(this._element, EVENT_SHOWN)\n }\n\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n const scrollSize = `scroll${capitalizedDimension}`\n const transitionDuration = getTransitionDurationFromElement(this._element)\n\n EventHandler.one(this._element, TRANSITION_END, complete)\n\n emulateTransitionEnd(this._element, transitionDuration)\n this._element.style[dimension] = `${this._element[scrollSize]}px`\n }\n\n hide() {\n if (this._isTransitioning || !this._element.classList.contains(CLASS_NAME_SHOW)) {\n return\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n if (startEvent.defaultPrevented) {\n return\n }\n\n const dimension = this._getDimension()\n\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n reflow(this._element)\n\n this._element.classList.add(CLASS_NAME_COLLAPSING)\n this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n const triggerArrayLength = this._triggerArray.length\n if (triggerArrayLength > 0) {\n for (let i = 0; i < triggerArrayLength; i++) {\n const trigger = this._triggerArray[i]\n const elem = getElementFromSelector(trigger)\n\n if (elem && !elem.classList.contains(CLASS_NAME_SHOW)) {\n trigger.classList.add(CLASS_NAME_COLLAPSED)\n trigger.setAttribute('aria-expanded', false)\n }\n }\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n this.setTransitioning(false)\n this._element.classList.remove(CLASS_NAME_COLLAPSING)\n this._element.classList.add(CLASS_NAME_COLLAPSE)\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n this._element.style[dimension] = ''\n const transitionDuration = getTransitionDurationFromElement(this._element)\n\n EventHandler.one(this._element, TRANSITION_END, complete)\n emulateTransitionEnd(this._element, transitionDuration)\n }\n\n setTransitioning(isTransitioning) {\n this._isTransitioning = isTransitioning\n }\n\n dispose() {\n super.dispose()\n this._config = null\n this._parent = null\n this._triggerArray = null\n this._isTransitioning = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n config.toggle = Boolean(config.toggle) // Coerce string values\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _getDimension() {\n return this._element.classList.contains(WIDTH) ? WIDTH : HEIGHT\n }\n\n _getParent() {\n let { parent } = this._config\n\n if (isElement(parent)) {\n // it's a jQuery object\n if (typeof parent.jquery !== 'undefined' || typeof parent[0] !== 'undefined') {\n parent = parent[0]\n }\n } else {\n parent = SelectorEngine.findOne(parent)\n }\n\n const selector = `${SELECTOR_DATA_TOGGLE}[data-bs-parent=\"${parent}\"]`\n\n SelectorEngine.find(selector, parent)\n .forEach(element => {\n const selected = getElementFromSelector(element)\n\n this._addAriaAndCollapsedClass(\n selected,\n [element]\n )\n })\n\n return parent\n }\n\n _addAriaAndCollapsedClass(element, triggerArray) {\n if (!element || !triggerArray.length) {\n return\n }\n\n const isOpen = element.classList.contains(CLASS_NAME_SHOW)\n\n triggerArray.forEach(elem => {\n if (isOpen) {\n elem.classList.remove(CLASS_NAME_COLLAPSED)\n } else {\n elem.classList.add(CLASS_NAME_COLLAPSED)\n }\n\n elem.setAttribute('aria-expanded', isOpen)\n })\n }\n\n // Static\n\n static collapseInterface(element, config) {\n let data = Data.getData(element, DATA_KEY)\n const _config = {\n ...Default,\n ...Manipulator.getDataAttributes(element),\n ...(typeof config === 'object' && config ? config : {})\n }\n\n if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false\n }\n\n if (!data) {\n data = new Collapse(element, _config)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n }\n\n static jQueryInterface(config) {\n return this.each(function () {\n Collapse.collapseInterface(this, config)\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n // preventDefault only for elements (which change the URL) not inside the collapsible element\n if (event.target.tagName === 'A') {\n event.preventDefault()\n }\n\n const triggerData = Manipulator.getDataAttributes(this)\n const selector = getSelectorFromElement(this)\n const selectorElements = SelectorEngine.find(selector)\n\n selectorElements.forEach(element => {\n const data = Data.getData(element, DATA_KEY)\n let config\n if (data) {\n // update parent attribute\n if (data._parent === null && typeof triggerData.parent === 'string') {\n data._config.parent = triggerData.parent\n data._parent = data._getParent()\n }\n\n config = 'toggle'\n } else {\n config = triggerData\n }\n\n Collapse.collapseInterface(element, config)\n })\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Collapse to jQuery only if jQuery is present\n */\n\nonDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Collapse.jQueryInterface\n $.fn[NAME].Constructor = Collapse\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Collapse.jQueryInterface\n }\n }\n})\n\nexport default Collapse\n","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","/*:: import type { Window } from '../types'; */\n\n/*:: declare function getWindow(node: Node | Window): Window; */\nexport default function getWindow(node) {\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\n/*:: declare function isElement(node: mixed): boolean %checks(node instanceof\n Element); */\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n/*:: declare function isHTMLElement(node: mixed): boolean %checks(node instanceof\n HTMLElement); */\n\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n/*:: declare function isShadowRoot(node: mixed): boolean %checks(node instanceof\n ShadowRoot); */\n\n\nfunction isShadowRoot(node) {\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","// Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\nexport default function getLayoutRect(element) {\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: element.offsetWidth,\n height: element.offsetHeight\n };\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe: assume body is always available\n return ((isElement(element) ? element.ownerDocument : element.document) || window.document).documentElement;\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// $FlowFixMe: this is a quicker (but less type safe) way to save quite some bytes from the bundle\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || // DOM Element detected\n // $FlowFixMe: need a better way to handle this...\n element.host || // ShadowRoot detected\n // $FlowFixMe: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n var offsetParent = element.offsetParent;\n\n if (offsetParent) {\n var html = getDocumentElement(offsetParent);\n\n if (getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static' && getComputedStyle(html).position !== 'static') {\n return html;\n }\n }\n\n return offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var currentNode = getParentNode(element);\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.willChange && css.willChange !== 'auto') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static') {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","export default function within(min, value, max) {\n return Math.max(min, Math.min(value, max));\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign(Object.assign({}, getFreshSideObject()), paddingObject);\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport within from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = state.modifiersData[name + \"#persistent\"].padding;\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element,\n _options$padding = options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n if (!isHTMLElement(arrowElement)) {\n console.error(['Popper: \"arrow\" element must be an HTMLElement (not an SVGElement).', 'To use an SVG arrow, wrap it in an HTMLElement that will be used as', 'the arrow.'].join(' '));\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: \"arrow\" modifier\\'s `element` must be a child of the popper', 'element.'].join(' '));\n }\n\n return;\n }\n\n state.elements.arrow = arrowElement;\n state.modifiersData[name + \"#persistent\"] = {\n padding: mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements))\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","import { top, left, right, bottom } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsets(_ref) {\n var x = _ref.x,\n y = _ref.y;\n var win = window;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: Math.round(x * dpr) / dpr || 0,\n y: Math.round(y * dpr) / dpr || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive;\n\n var _roundOffsets = roundOffsets(offsets),\n x = _roundOffsets.x,\n y = _roundOffsets.y;\n\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n } // $FlowFixMe: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n /*:: offsetParent = (offsetParent: Element); */\n\n\n if (placement === top) {\n sideY = bottom;\n y -= offsetParent.clientHeight - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left) {\n sideX = right;\n x -= offsetParent.clientWidth - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign(Object.assign({}, commonStyles), {}, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) < 2 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign(Object.assign({}, commonStyles), {}, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref3) {\n var state = _ref3.state,\n options = _ref3.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive;\n\n if (process.env.NODE_ENV !== \"production\") {\n var transitionProperty = getComputedStyle(state.elements.popper).transitionProperty || '';\n\n if (adaptive && ['transform', 'top', 'right', 'bottom', 'left'].some(function (property) {\n return transitionProperty.indexOf(property) >= 0;\n })) {\n console.warn(['Popper: Detected CSS transitions on at least one of the following', 'CSS properties: \"transform\", \"top\", \"right\", \"bottom\", \"left\".', '\\n\\n', 'Disable the \"computeStyles\" modifier\\'s `adaptive` option to allow', 'for smooth transitions, or remove these properties from the CSS', 'transition declaration on the popper element if only transitioning', 'opacity or background-color for example.', '\\n\\n', 'We recommend using the popper element as a wrapper around an inner', 'element that can have any CSS property transitioned for animations.'].join(' '));\n }\n }\n\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign(Object.assign({}, state.styles.popper), mapToStyles(Object.assign(Object.assign({}, commonStyles), {}, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign(Object.assign({}, state.styles.arrow), mapToStyles(Object.assign(Object.assign({}, commonStyles), {}, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false\n })));\n }\n\n state.attributes.popper = Object.assign(Object.assign({}, state.attributes.popper), {}, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","export default function getBoundingClientRect(element) {\n var rect = element.getBoundingClientRect();\n return {\n width: rect.width,\n height: rect.height,\n top: rect.top,\n right: rect.right,\n bottom: rect.bottom,\n left: rect.left,\n x: rect.left,\n y: rect.top\n };\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on \n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nexport default function getViewportRect(element) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0; // NB: This isn't supported on iOS <= 12. If the keyboard is open, the popper\n // can be obscured underneath it.\n // Also, `html.clientHeight` adds the bottom bar height in Safari iOS, even\n // if it isn't open, so if this isn't available, the popper will be detected\n // to overflow the bottom of the screen too early.\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height; // Uses Layout Viewport (like Chrome; Safari does not currently)\n // In Chrome, it returns a value very close to 0 (+/-) but contains rounding\n // errors due to floating point numbers, so we need to check precision.\n // Safari returns a number <= 0, usually < -1 when pinch-zoomed\n // Feature detection fails in mobile emulation mode in Chrome.\n // Math.abs(win.innerWidth / visualViewport.scale - visualViewport.width) <\n // 0.001\n // Fallback here: \"Not Safari\" userAgent\n\n if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = element.ownerDocument.body;\n var width = Math.max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = Math.max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += Math.max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the \nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = getNodeName(scrollParent) === 'body';\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","export default function rectToClientRect(rect) {\n return Object.assign(Object.assign({}, rect), {}, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\n\nfunction getInnerBoundingClientRect(element) {\n var rect = getBoundingClientRect(element);\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isHTMLElement(clippingParent) ? getInnerBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent);\n accRect.top = Math.max(rect.top, accRect.top);\n accRect.right = Math.min(rect.right, accRect.right);\n accRect.bottom = Math.min(rect.bottom, accRect.bottom);\n accRect.left = Math.max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = Math.floor(offsets[mainAxis]) - Math.floor(reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = Math.floor(offsets[mainAxis]) + Math.ceil(reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var referenceElement = state.elements.reference;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary);\n var referenceClientRect = getBoundingClientRect(referenceElement);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign(Object.assign({}, popperRect), popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\n\n/*:: type OverflowsMap = { [ComputedPlacement]: number }; */\n\n/*;; type OverflowsMap = { [key in ComputedPlacement]: number }; */\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements; // $FlowFixMe\n\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: The `allowedAutoPlacements` option did not allow any', 'placements. Ensure the `placement` option matches the variation', 'of the allowed placements.', 'For example, \"auto\" cannot be used to allow \"bottom-start\".', 'Use \"auto-start\" instead.'].join(' '));\n }\n } // $FlowFixMe: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign(Object.assign({}, state.attributes.popper), {}, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\";\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign(Object.assign({}, rects), {}, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport within from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign(Object.assign({}, state.rects), {}, {\n placement: state.placement\n })) : tetherOffset;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = popperOffsets[mainAxis] + overflow[mainSide];\n var max = popperOffsets[mainAxis] - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - tetherOffsetValue : minLen - arrowLen - arrowPaddingMin - tetherOffsetValue;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + tetherOffsetValue : maxLen + arrowLen + arrowPaddingMax + tetherOffsetValue;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = state.modifiersData.offset ? state.modifiersData.offset[state.placement][mainAxis] : 0;\n var tetherMin = popperOffsets[mainAxis] + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = popperOffsets[mainAxis] + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? Math.min(min, tetherMin) : min, offset, tether ? Math.max(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var _preventedOffset = within(_min, _offset, _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\"; // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement);\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign(Object.assign(Object.assign({}, existing), current), {}, {\n options: Object.assign(Object.assign({}, existing.options), current.options),\n data: Object.assign(Object.assign({}, existing.data), current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport getComputedStyle from \"./dom-utils/getComputedStyle.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport validateModifiers from \"./utils/validateModifiers.js\";\nimport uniqueBy from \"./utils/uniqueBy.js\";\nimport getBasePlacement from \"./utils/getBasePlacement.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nimport { auto } from \"./enums.js\";\nvar INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.';\nvar INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.';\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign(Object.assign({}, DEFAULT_OPTIONS), defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(options) {\n cleanupModifierEffects();\n state.options = Object.assign(Object.assign(Object.assign({}, defaultOptions), state.options), options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n }); // Validate the provided modifiers so that the consumer will get warned\n // if one of the modifiers is invalid for any reason\n\n if (process.env.NODE_ENV !== \"production\") {\n var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function (_ref) {\n var name = _ref.name;\n return name;\n });\n validateModifiers(modifiers);\n\n if (getBasePlacement(state.options.placement) === auto) {\n var flipModifier = state.orderedModifiers.find(function (_ref2) {\n var name = _ref2.name;\n return name === 'flip';\n });\n\n if (!flipModifier) {\n console.error(['Popper: \"auto\" placements require the \"flip\" modifier be', 'present and enabled to work.'].join(' '));\n }\n }\n\n var _getComputedStyle = getComputedStyle(popper),\n marginTop = _getComputedStyle.marginTop,\n marginRight = _getComputedStyle.marginRight,\n marginBottom = _getComputedStyle.marginBottom,\n marginLeft = _getComputedStyle.marginLeft; // We no longer take into account `margins` on the popper, and it can\n // cause bugs with positioning, so we'll warn the consumer\n\n\n if ([marginTop, marginRight, marginBottom, marginLeft].some(function (margin) {\n return parseFloat(margin);\n })) {\n console.warn(['Popper: CSS \"margin\" styles cannot be used to apply padding', 'between the popper and its reference element or boundary.', 'To replicate margin, use the `offset` modifier, as well as', 'the `padding` option in the `preventOverflow` and `flip`', 'modifiers.'].join(' '));\n }\n }\n\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n var __debug_loops__ = 0;\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (process.env.NODE_ENV !== \"production\") {\n __debug_loops__ += 1;\n\n if (__debug_loops__ > 100) {\n console.error(INFINITE_LOOP_ERROR);\n break;\n }\n }\n\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref3) {\n var name = _ref3.name,\n _ref3$options = _ref3.options,\n options = _ref3$options === void 0 ? {} : _ref3$options,\n effect = _ref3.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow };","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\n\nimport {\n getjQuery,\n onDOMContentLoaded,\n getElementFromSelector,\n isElement,\n isVisible,\n isRTL,\n noop,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'dropdown'\nconst DATA_KEY = 'bs.dropdown'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst SPACE_KEY = 'Space'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst RIGHT_MOUSE_BUTTON = 2 // MouseEvent.button value for the secondary button, usually the right button\n\nconst REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEY}|${ARROW_DOWN_KEY}|${ESCAPE_KEY}`)\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK = `click${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DISABLED = 'disabled'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_DROPUP = 'dropup'\nconst CLASS_NAME_DROPEND = 'dropend'\nconst CLASS_NAME_DROPSTART = 'dropstart'\nconst CLASS_NAME_NAVBAR = 'navbar'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dropdown\"]'\nconst SELECTOR_FORM_CHILD = '.dropdown form'\nconst SELECTOR_MENU = '.dropdown-menu'\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav'\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n\nconst PLACEMENT_TOP = isRTL ? 'top-end' : 'top-start'\nconst PLACEMENT_TOPEND = isRTL ? 'top-start' : 'top-end'\nconst PLACEMENT_BOTTOM = isRTL ? 'bottom-end' : 'bottom-start'\nconst PLACEMENT_BOTTOMEND = isRTL ? 'bottom-start' : 'bottom-end'\nconst PLACEMENT_RIGHT = isRTL ? 'left-start' : 'right-start'\nconst PLACEMENT_LEFT = isRTL ? 'right-start' : 'left-start'\n\nconst Default = {\n offset: 0,\n flip: true,\n boundary: 'clippingParents',\n reference: 'toggle',\n display: 'dynamic',\n popperConfig: null\n}\n\nconst DefaultType = {\n offset: '(number|string|function)',\n flip: 'boolean',\n boundary: '(string|element)',\n reference: '(string|element)',\n display: 'string',\n popperConfig: '(null|object)'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Dropdown extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._popper = null\n this._config = this._getConfig(config)\n this._menu = this._getMenuElement()\n this._inNavbar = this._detectNavbar()\n\n this._addEventListeners()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n toggle() {\n if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED)) {\n return\n }\n\n const isActive = this._element.classList.contains(CLASS_NAME_SHOW)\n\n Dropdown.clearMenus()\n\n if (isActive) {\n return\n }\n\n this.show()\n }\n\n show() {\n if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED) || this._menu.classList.contains(CLASS_NAME_SHOW)) {\n return\n }\n\n const parent = Dropdown.getParentFromElement(this._element)\n const relatedTarget = {\n relatedTarget: this._element\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, relatedTarget)\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n // Totally disable Popper for Dropdowns in Navbar\n if (!this._inNavbar) {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)')\n }\n\n let referenceElement = this._element\n\n if (this._config.reference === 'parent') {\n referenceElement = parent\n } else if (isElement(this._config.reference)) {\n referenceElement = this._config.reference\n\n // Check if it's jQuery element\n if (typeof this._config.reference.jquery !== 'undefined') {\n referenceElement = this._config.reference[0]\n }\n }\n\n this._popper = Popper.createPopper(referenceElement, this._menu, this._getPopperConfig())\n }\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement &&\n !parent.closest(SELECTOR_NAVBAR_NAV)) {\n [].concat(...document.body.children)\n .forEach(elem => EventHandler.on(elem, 'mouseover', null, noop()))\n }\n\n this._element.focus()\n this._element.setAttribute('aria-expanded', true)\n\n this._menu.classList.toggle(CLASS_NAME_SHOW)\n this._element.classList.toggle(CLASS_NAME_SHOW)\n EventHandler.trigger(parent, EVENT_SHOWN, relatedTarget)\n }\n\n hide() {\n if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED) || !this._menu.classList.contains(CLASS_NAME_SHOW)) {\n return\n }\n\n const parent = Dropdown.getParentFromElement(this._element)\n const relatedTarget = {\n relatedTarget: this._element\n }\n\n const hideEvent = EventHandler.trigger(parent, EVENT_HIDE, relatedTarget)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n if (this._popper) {\n this._popper.destroy()\n }\n\n this._menu.classList.toggle(CLASS_NAME_SHOW)\n this._element.classList.toggle(CLASS_NAME_SHOW)\n EventHandler.trigger(parent, EVENT_HIDDEN, relatedTarget)\n }\n\n dispose() {\n super.dispose()\n EventHandler.off(this._element, EVENT_KEY)\n this._menu = null\n\n if (this._popper) {\n this._popper.destroy()\n this._popper = null\n }\n }\n\n update() {\n this._inNavbar = this._detectNavbar()\n if (this._popper) {\n this._popper.update()\n }\n }\n\n // Private\n\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_CLICK, event => {\n event.preventDefault()\n event.stopPropagation()\n this.toggle()\n })\n }\n\n _getConfig(config) {\n config = {\n ...this.constructor.Default,\n ...Manipulator.getDataAttributes(this._element),\n ...config\n }\n\n typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n return config\n }\n\n _getMenuElement() {\n return SelectorEngine.next(this._element, SELECTOR_MENU)[0]\n }\n\n _getPlacement() {\n const parentDropdown = this._element.parentNode\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {\n return PLACEMENT_RIGHT\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {\n return PLACEMENT_LEFT\n }\n\n // We need to trim the value because custom properties can also include spaces\n const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end'\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {\n return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP\n }\n\n return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM\n }\n\n _detectNavbar() {\n return this._element.closest(`.${CLASS_NAME_NAVBAR}`) !== null\n }\n\n _getPopperConfig() {\n const popperConfig = {\n placement: this._getPlacement(),\n modifiers: [{\n name: 'preventOverflow',\n options: {\n altBoundary: this._config.flip,\n rootBoundary: this._config.boundary\n }\n }]\n }\n\n // Disable Popper if we have a static display\n if (this._config.display === 'static') {\n popperConfig.modifiers = [{\n name: 'applyStyles',\n enabled: false\n }]\n }\n\n return {\n ...popperConfig,\n ...this._config.popperConfig\n }\n }\n\n // Static\n\n static dropdownInterface(element, config) {\n let data = Data.getData(element, DATA_KEY)\n const _config = typeof config === 'object' ? config : null\n\n if (!data) {\n data = new Dropdown(element, _config)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n }\n\n static jQueryInterface(config) {\n return this.each(function () {\n Dropdown.dropdownInterface(this, config)\n })\n }\n\n static clearMenus(event) {\n if (event && (event.button === RIGHT_MOUSE_BUTTON || (event.type === 'keyup' && event.key !== TAB_KEY))) {\n return\n }\n\n const toggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n for (let i = 0, len = toggles.length; i < len; i++) {\n const parent = Dropdown.getParentFromElement(toggles[i])\n const context = Data.getData(toggles[i], DATA_KEY)\n const relatedTarget = {\n relatedTarget: toggles[i]\n }\n\n if (event && event.type === 'click') {\n relatedTarget.clickEvent = event\n }\n\n if (!context) {\n continue\n }\n\n const dropdownMenu = context._menu\n if (!toggles[i].classList.contains(CLASS_NAME_SHOW)) {\n continue\n }\n\n if (event && ((event.type === 'click' &&\n /input|textarea/i.test(event.target.tagName)) ||\n (event.type === 'keyup' && event.key === TAB_KEY)) &&\n dropdownMenu.contains(event.target)) {\n continue\n }\n\n const hideEvent = EventHandler.trigger(parent, EVENT_HIDE, relatedTarget)\n if (hideEvent.defaultPrevented) {\n continue\n }\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n [].concat(...document.body.children)\n .forEach(elem => EventHandler.off(elem, 'mouseover', null, noop()))\n }\n\n toggles[i].setAttribute('aria-expanded', 'false')\n\n if (context._popper) {\n context._popper.destroy()\n }\n\n dropdownMenu.classList.remove(CLASS_NAME_SHOW)\n toggles[i].classList.remove(CLASS_NAME_SHOW)\n EventHandler.trigger(parent, EVENT_HIDDEN, relatedTarget)\n }\n }\n\n static getParentFromElement(element) {\n return getElementFromSelector(element) || element.parentNode\n }\n\n static dataApiKeydownHandler(event) {\n // If not input/textarea:\n // - And not a key in REGEXP_KEYDOWN => not a dropdown command\n // If input/textarea:\n // - If space key => not a dropdown command\n // - If key is other than escape\n // - If key is not up or down => not a dropdown command\n // - If trigger inside the menu => not a dropdown command\n if (/input|textarea/i.test(event.target.tagName) ?\n event.key === SPACE_KEY || (event.key !== ESCAPE_KEY &&\n ((event.key !== ARROW_DOWN_KEY && event.key !== ARROW_UP_KEY) ||\n event.target.closest(SELECTOR_MENU))) :\n !REGEXP_KEYDOWN.test(event.key)) {\n return\n }\n\n event.preventDefault()\n event.stopPropagation()\n\n if (this.disabled || this.classList.contains(CLASS_NAME_DISABLED)) {\n return\n }\n\n const parent = Dropdown.getParentFromElement(this)\n const isActive = this.classList.contains(CLASS_NAME_SHOW)\n\n if (event.key === ESCAPE_KEY) {\n const button = this.matches(SELECTOR_DATA_TOGGLE) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0]\n button.focus()\n Dropdown.clearMenus()\n return\n }\n\n if (!isActive || event.key === SPACE_KEY) {\n Dropdown.clearMenus()\n return\n }\n\n const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, parent).filter(isVisible)\n\n if (!items.length) {\n return\n }\n\n let index = items.indexOf(event.target)\n\n // Up\n if (event.key === ARROW_UP_KEY && index > 0) {\n index--\n }\n\n // Down\n if (event.key === ARROW_DOWN_KEY && index < items.length - 1) {\n index++\n }\n\n // index is -1 if the first keydown is an ArrowUp\n index = index === -1 ? 0 : index\n\n items[index].focus()\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_CLICK_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n event.preventDefault()\n event.stopPropagation()\n Dropdown.dropdownInterface(this, 'toggle')\n})\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_FORM_CHILD, e => e.stopPropagation())\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Dropdown to jQuery only if jQuery is present\n */\n\nonDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Dropdown.jQueryInterface\n $.fn[NAME].Constructor = Dropdown\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Dropdown.jQueryInterface\n }\n }\n})\n\nexport default Dropdown\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n getjQuery,\n onDOMContentLoaded,\n TRANSITION_END,\n emulateTransitionEnd,\n getElementFromSelector,\n getTransitionDurationFromElement,\n isVisible,\n isRTL,\n reflow,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'modal'\nconst DATA_KEY = 'bs.modal'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst ESCAPE_KEY = 'Escape'\n\nconst Default = {\n backdrop: true,\n keyboard: true,\n focus: true\n}\n\nconst DefaultType = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n focus: 'boolean'\n}\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEUP_DISMISS = `mouseup.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SCROLLBAR_MEASURER = 'modal-scrollbar-measure'\nconst CLASS_NAME_BACKDROP = 'modal-backdrop'\nconst CLASS_NAME_OPEN = 'modal-open'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_STATIC = 'modal-static'\n\nconst SELECTOR_DIALOG = '.modal-dialog'\nconst SELECTOR_MODAL_BODY = '.modal-body'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"modal\"]'\nconst SELECTOR_DATA_DISMISS = '[data-bs-dismiss=\"modal\"]'\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Modal extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._config = this._getConfig(config)\n this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, element)\n this._backdrop = null\n this._isShown = false\n this._isBodyOverflowing = false\n this._ignoreBackdropClick = false\n this._isTransitioning = false\n this._scrollbarWidth = 0\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget)\n }\n\n show(relatedTarget) {\n if (this._isShown || this._isTransitioning) {\n return\n }\n\n if (this._element.classList.contains(CLASS_NAME_FADE)) {\n this._isTransitioning = true\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n relatedTarget\n })\n\n if (this._isShown || showEvent.defaultPrevented) {\n return\n }\n\n this._isShown = true\n\n this._checkScrollbar()\n this._setScrollbar()\n\n this._adjustDialog()\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n EventHandler.on(this._element, EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, event => this.hide(event))\n\n EventHandler.on(this._dialog, EVENT_MOUSEDOWN_DISMISS, () => {\n EventHandler.one(this._element, EVENT_MOUSEUP_DISMISS, event => {\n if (event.target === this._element) {\n this._ignoreBackdropClick = true\n }\n })\n })\n\n this._showBackdrop(() => this._showElement(relatedTarget))\n }\n\n hide(event) {\n if (event) {\n event.preventDefault()\n }\n\n if (!this._isShown || this._isTransitioning) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n this._isShown = false\n const transition = this._element.classList.contains(CLASS_NAME_FADE)\n\n if (transition) {\n this._isTransitioning = true\n }\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n EventHandler.off(document, EVENT_FOCUSIN)\n\n this._element.classList.remove(CLASS_NAME_SHOW)\n\n EventHandler.off(this._element, EVENT_CLICK_DISMISS)\n EventHandler.off(this._dialog, EVENT_MOUSEDOWN_DISMISS)\n\n if (transition) {\n const transitionDuration = getTransitionDurationFromElement(this._element)\n\n EventHandler.one(this._element, TRANSITION_END, event => this._hideModal(event))\n emulateTransitionEnd(this._element, transitionDuration)\n } else {\n this._hideModal()\n }\n }\n\n dispose() {\n [window, this._element, this._dialog]\n .forEach(htmlElement => EventHandler.off(htmlElement, EVENT_KEY))\n\n super.dispose()\n\n /**\n * `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API`\n * Do not move `document` in `htmlElements` array\n * It will remove `EVENT_CLICK_DATA_API` event that should remain\n */\n EventHandler.off(document, EVENT_FOCUSIN)\n\n this._config = null\n this._dialog = null\n this._backdrop = null\n this._isShown = null\n this._isBodyOverflowing = null\n this._ignoreBackdropClick = null\n this._isTransitioning = null\n this._scrollbarWidth = null\n }\n\n handleUpdate() {\n this._adjustDialog()\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _showElement(relatedTarget) {\n const transition = this._element.classList.contains(CLASS_NAME_FADE)\n const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog)\n\n if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n // Don't move modal's DOM position\n document.body.appendChild(this._element)\n }\n\n this._element.style.display = 'block'\n this._element.removeAttribute('aria-hidden')\n this._element.setAttribute('aria-modal', true)\n this._element.setAttribute('role', 'dialog')\n this._element.scrollTop = 0\n\n if (modalBody) {\n modalBody.scrollTop = 0\n }\n\n if (transition) {\n reflow(this._element)\n }\n\n this._element.classList.add(CLASS_NAME_SHOW)\n\n if (this._config.focus) {\n this._enforceFocus()\n }\n\n const transitionComplete = () => {\n if (this._config.focus) {\n this._element.focus()\n }\n\n this._isTransitioning = false\n EventHandler.trigger(this._element, EVENT_SHOWN, {\n relatedTarget\n })\n }\n\n if (transition) {\n const transitionDuration = getTransitionDurationFromElement(this._dialog)\n\n EventHandler.one(this._dialog, TRANSITION_END, transitionComplete)\n emulateTransitionEnd(this._dialog, transitionDuration)\n } else {\n transitionComplete()\n }\n }\n\n _enforceFocus() {\n EventHandler.off(document, EVENT_FOCUSIN) // guard against infinite focus loop\n EventHandler.on(document, EVENT_FOCUSIN, event => {\n if (document !== event.target &&\n this._element !== event.target &&\n !this._element.contains(event.target)) {\n this._element.focus()\n }\n })\n }\n\n _setEscapeEvent() {\n if (this._isShown) {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n if (this._config.keyboard && event.key === ESCAPE_KEY) {\n event.preventDefault()\n this.hide()\n } else if (!this._config.keyboard && event.key === ESCAPE_KEY) {\n this._triggerBackdropTransition()\n }\n })\n } else {\n EventHandler.off(this._element, EVENT_KEYDOWN_DISMISS)\n }\n }\n\n _setResizeEvent() {\n if (this._isShown) {\n EventHandler.on(window, EVENT_RESIZE, () => this._adjustDialog())\n } else {\n EventHandler.off(window, EVENT_RESIZE)\n }\n }\n\n _hideModal() {\n this._element.style.display = 'none'\n this._element.setAttribute('aria-hidden', true)\n this._element.removeAttribute('aria-modal')\n this._element.removeAttribute('role')\n this._isTransitioning = false\n this._showBackdrop(() => {\n document.body.classList.remove(CLASS_NAME_OPEN)\n this._resetAdjustments()\n this._resetScrollbar()\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n })\n }\n\n _removeBackdrop() {\n this._backdrop.parentNode.removeChild(this._backdrop)\n this._backdrop = null\n }\n\n _showBackdrop(callback) {\n const animate = this._element.classList.contains(CLASS_NAME_FADE) ?\n CLASS_NAME_FADE :\n ''\n\n if (this._isShown && this._config.backdrop) {\n this._backdrop = document.createElement('div')\n this._backdrop.className = CLASS_NAME_BACKDROP\n\n if (animate) {\n this._backdrop.classList.add(animate)\n }\n\n document.body.appendChild(this._backdrop)\n\n EventHandler.on(this._element, EVENT_CLICK_DISMISS, event => {\n if (this._ignoreBackdropClick) {\n this._ignoreBackdropClick = false\n return\n }\n\n if (event.target !== event.currentTarget) {\n return\n }\n\n if (this._config.backdrop === 'static') {\n this._triggerBackdropTransition()\n } else {\n this.hide()\n }\n })\n\n if (animate) {\n reflow(this._backdrop)\n }\n\n this._backdrop.classList.add(CLASS_NAME_SHOW)\n\n if (!animate) {\n callback()\n return\n }\n\n const backdropTransitionDuration = getTransitionDurationFromElement(this._backdrop)\n\n EventHandler.one(this._backdrop, TRANSITION_END, callback)\n emulateTransitionEnd(this._backdrop, backdropTransitionDuration)\n } else if (!this._isShown && this._backdrop) {\n this._backdrop.classList.remove(CLASS_NAME_SHOW)\n\n const callbackRemove = () => {\n this._removeBackdrop()\n callback()\n }\n\n if (this._element.classList.contains(CLASS_NAME_FADE)) {\n const backdropTransitionDuration = getTransitionDurationFromElement(this._backdrop)\n EventHandler.one(this._backdrop, TRANSITION_END, callbackRemove)\n emulateTransitionEnd(this._backdrop, backdropTransitionDuration)\n } else {\n callbackRemove()\n }\n } else {\n callback()\n }\n }\n\n _triggerBackdropTransition() {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n if (hideEvent.defaultPrevented) {\n return\n }\n\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n\n if (!isModalOverflowing) {\n this._element.style.overflowY = 'hidden'\n }\n\n this._element.classList.add(CLASS_NAME_STATIC)\n const modalTransitionDuration = getTransitionDurationFromElement(this._dialog)\n EventHandler.off(this._element, TRANSITION_END)\n EventHandler.one(this._element, TRANSITION_END, () => {\n this._element.classList.remove(CLASS_NAME_STATIC)\n if (!isModalOverflowing) {\n EventHandler.one(this._element, TRANSITION_END, () => {\n this._element.style.overflowY = ''\n })\n emulateTransitionEnd(this._element, modalTransitionDuration)\n }\n })\n emulateTransitionEnd(this._element, modalTransitionDuration)\n this._element.focus()\n }\n\n // ----------------------------------------------------------------------\n // the following methods are used to handle overflowing modals\n // ----------------------------------------------------------------------\n\n _adjustDialog() {\n const isModalOverflowing =\n this._element.scrollHeight > document.documentElement.clientHeight\n\n if ((!this._isBodyOverflowing && isModalOverflowing && !isRTL) || (this._isBodyOverflowing && !isModalOverflowing && isRTL)) {\n this._element.style.paddingLeft = `${this._scrollbarWidth}px`\n }\n\n if ((this._isBodyOverflowing && !isModalOverflowing && !isRTL) || (!this._isBodyOverflowing && isModalOverflowing && isRTL)) {\n this._element.style.paddingRight = `${this._scrollbarWidth}px`\n }\n }\n\n _resetAdjustments() {\n this._element.style.paddingLeft = ''\n this._element.style.paddingRight = ''\n }\n\n _checkScrollbar() {\n const rect = document.body.getBoundingClientRect()\n this._isBodyOverflowing = Math.round(rect.left + rect.right) < window.innerWidth\n this._scrollbarWidth = this._getScrollbarWidth()\n }\n\n _setScrollbar() {\n if (this._isBodyOverflowing) {\n // Note: DOMNode.style.paddingRight returns the actual value or '' if not set\n // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set\n\n // Adjust fixed content padding\n SelectorEngine.find(SELECTOR_FIXED_CONTENT)\n .forEach(element => {\n const actualPadding = element.style.paddingRight\n const calculatedPadding = window.getComputedStyle(element)['padding-right']\n Manipulator.setDataAttribute(element, 'padding-right', actualPadding)\n element.style.paddingRight = `${Number.parseFloat(calculatedPadding) + this._scrollbarWidth}px`\n })\n\n // Adjust sticky content margin\n SelectorEngine.find(SELECTOR_STICKY_CONTENT)\n .forEach(element => {\n const actualMargin = element.style.marginRight\n const calculatedMargin = window.getComputedStyle(element)['margin-right']\n Manipulator.setDataAttribute(element, 'margin-right', actualMargin)\n element.style.marginRight = `${Number.parseFloat(calculatedMargin) - this._scrollbarWidth}px`\n })\n\n // Adjust body padding\n const actualPadding = document.body.style.paddingRight\n const calculatedPadding = window.getComputedStyle(document.body)['padding-right']\n\n Manipulator.setDataAttribute(document.body, 'padding-right', actualPadding)\n document.body.style.paddingRight = `${Number.parseFloat(calculatedPadding) + this._scrollbarWidth}px`\n }\n\n document.body.classList.add(CLASS_NAME_OPEN)\n }\n\n _resetScrollbar() {\n // Restore fixed content padding\n SelectorEngine.find(SELECTOR_FIXED_CONTENT)\n .forEach(element => {\n const padding = Manipulator.getDataAttribute(element, 'padding-right')\n if (typeof padding !== 'undefined') {\n Manipulator.removeDataAttribute(element, 'padding-right')\n element.style.paddingRight = padding\n }\n })\n\n // Restore sticky content and navbar-toggler margin\n SelectorEngine.find(`${SELECTOR_STICKY_CONTENT}`)\n .forEach(element => {\n const margin = Manipulator.getDataAttribute(element, 'margin-right')\n if (typeof margin !== 'undefined') {\n Manipulator.removeDataAttribute(element, 'margin-right')\n element.style.marginRight = margin\n }\n })\n\n // Restore body padding\n const padding = Manipulator.getDataAttribute(document.body, 'padding-right')\n if (typeof padding === 'undefined') {\n document.body.style.paddingRight = ''\n } else {\n Manipulator.removeDataAttribute(document.body, 'padding-right')\n document.body.style.paddingRight = padding\n }\n }\n\n _getScrollbarWidth() { // thx d.walsh\n const scrollDiv = document.createElement('div')\n scrollDiv.className = CLASS_NAME_SCROLLBAR_MEASURER\n document.body.appendChild(scrollDiv)\n const scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth\n document.body.removeChild(scrollDiv)\n return scrollbarWidth\n }\n\n // Static\n\n static jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY)\n const _config = {\n ...Default,\n ...Manipulator.getDataAttributes(this),\n ...(typeof config === 'object' && config ? config : {})\n }\n\n if (!data) {\n data = new Modal(this, _config)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](relatedTarget)\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n const target = getElementFromSelector(this)\n\n if (this.tagName === 'A' || this.tagName === 'AREA') {\n event.preventDefault()\n }\n\n EventHandler.one(target, EVENT_SHOW, showEvent => {\n if (showEvent.defaultPrevented) {\n // only register focus restorer if modal will actually get shown\n return\n }\n\n EventHandler.one(target, EVENT_HIDDEN, () => {\n if (isVisible(this)) {\n this.focus()\n }\n })\n })\n\n let data = Data.getData(target, DATA_KEY)\n if (!data) {\n const config = {\n ...Manipulator.getDataAttributes(target),\n ...Manipulator.getDataAttributes(this)\n }\n\n data = new Modal(target, config)\n }\n\n data.show(this)\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Modal to jQuery only if jQuery is present\n */\n\nonDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Modal.jQueryInterface\n $.fn[NAME].Constructor = Modal\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Modal.jQueryInterface\n }\n }\n})\n\nexport default Modal\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst uriAttrs = new Set([\n 'background',\n 'cite',\n 'href',\n 'itemtype',\n 'longdesc',\n 'poster',\n 'src',\n 'xlink:href'\n])\n\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\n/**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/gi\n\n/**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i\n\nconst allowedAttribute = (attr, allowedAttributeList) => {\n const attrName = attr.nodeName.toLowerCase()\n\n if (allowedAttributeList.includes(attrName)) {\n if (uriAttrs.has(attrName)) {\n return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN))\n }\n\n return true\n }\n\n const regExp = allowedAttributeList.filter(attrRegex => attrRegex instanceof RegExp)\n\n // Check if a regular expression validates the attribute.\n for (let i = 0, len = regExp.length; i < len; i++) {\n if (attrName.match(regExp[i])) {\n return true\n }\n }\n\n return false\n}\n\nexport const DefaultAllowlist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n}\n\nexport function sanitizeHtml(unsafeHtml, allowList, sanitizeFn) {\n if (!unsafeHtml.length) {\n return unsafeHtml\n }\n\n if (sanitizeFn && typeof sanitizeFn === 'function') {\n return sanitizeFn(unsafeHtml)\n }\n\n const domParser = new window.DOMParser()\n const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n const allowlistKeys = Object.keys(allowList)\n const elements = [].concat(...createdDocument.body.querySelectorAll('*'))\n\n for (let i = 0, len = elements.length; i < len; i++) {\n const el = elements[i]\n const elName = el.nodeName.toLowerCase()\n\n if (!allowlistKeys.includes(elName)) {\n el.parentNode.removeChild(el)\n\n continue\n }\n\n const attributeList = [].concat(...el.attributes)\n const allowedAttributes = [].concat(allowList['*'] || [], allowList[elName] || [])\n\n attributeList.forEach(attr => {\n if (!allowedAttribute(attr, allowedAttributes)) {\n el.removeAttribute(attr.nodeName)\n }\n })\n }\n\n return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\n\nimport {\n getjQuery,\n onDOMContentLoaded,\n TRANSITION_END,\n emulateTransitionEnd,\n findShadowRoot,\n getTransitionDurationFromElement,\n getUID,\n isElement,\n isRTL,\n noop,\n typeCheckConfig\n} from './util/index'\nimport {\n DefaultAllowlist,\n sanitizeHtml\n} from './util/sanitizer'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tooltip'\nconst DATA_KEY = 'bs.tooltip'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst CLASS_PREFIX = 'bs-tooltip'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn'])\n\nconst DefaultType = {\n animation: 'boolean',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string',\n delay: '(number|object)',\n html: 'boolean',\n selector: '(string|boolean)',\n placement: '(string|function)',\n container: '(string|element|boolean)',\n fallbackPlacements: '(null|array)',\n boundary: '(string|element)',\n customClass: '(string|function)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n allowList: 'object',\n popperConfig: '(null|object)'\n}\n\nconst AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: isRTL ? 'left' : 'right',\n BOTTOM: 'bottom',\n LEFT: isRTL ? 'right' : 'left'\n}\n\nconst Default = {\n animation: true,\n template: '' +\n '' +\n '' +\n '',\n trigger: 'hover focus',\n title: '',\n delay: 0,\n html: false,\n selector: false,\n placement: 'top',\n container: false,\n fallbackPlacements: null,\n boundary: 'clippingParents',\n customClass: '',\n sanitize: true,\n sanitizeFn: null,\n allowList: DefaultAllowlist,\n popperConfig: null\n}\n\nconst Event = {\n HIDE: `hide${EVENT_KEY}`,\n HIDDEN: `hidden${EVENT_KEY}`,\n SHOW: `show${EVENT_KEY}`,\n SHOWN: `shown${EVENT_KEY}`,\n INSERTED: `inserted${EVENT_KEY}`,\n CLICK: `click${EVENT_KEY}`,\n FOCUSIN: `focusin${EVENT_KEY}`,\n FOCUSOUT: `focusout${EVENT_KEY}`,\n MOUSEENTER: `mouseenter${EVENT_KEY}`,\n MOUSELEAVE: `mouseleave${EVENT_KEY}`\n}\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_MODAL = 'modal'\nconst CLASS_NAME_SHOW = 'show'\n\nconst HOVER_STATE_SHOW = 'show'\nconst HOVER_STATE_OUT = 'out'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tooltip extends BaseComponent {\n constructor(element, config) {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)')\n }\n\n super(element)\n\n // private\n this._isEnabled = true\n this._timeout = 0\n this._hoverState = ''\n this._activeTrigger = {}\n this._popper = null\n\n // Protected\n this.config = this._getConfig(config)\n this.tip = null\n\n this._setListeners()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n static get Event() {\n return Event\n }\n\n static get EVENT_KEY() {\n return EVENT_KEY\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Public\n\n enable() {\n this._isEnabled = true\n }\n\n disable() {\n this._isEnabled = false\n }\n\n toggleEnabled() {\n this._isEnabled = !this._isEnabled\n }\n\n toggle(event) {\n if (!this._isEnabled) {\n return\n }\n\n if (event) {\n const dataKey = this.constructor.DATA_KEY\n let context = Data.getData(event.delegateTarget, dataKey)\n\n if (!context) {\n context = new this.constructor(event.delegateTarget, this._getDelegateConfig())\n Data.setData(event.delegateTarget, dataKey, context)\n }\n\n context._activeTrigger.click = !context._activeTrigger.click\n\n if (context._isWithActiveTrigger()) {\n context._enter(null, context)\n } else {\n context._leave(null, context)\n }\n } else {\n if (this.getTipElement().classList.contains(CLASS_NAME_SHOW)) {\n this._leave(null, this)\n return\n }\n\n this._enter(null, this)\n }\n }\n\n dispose() {\n clearTimeout(this._timeout)\n\n EventHandler.off(this._element, this.constructor.EVENT_KEY)\n EventHandler.off(this._element.closest(`.${CLASS_NAME_MODAL}`), 'hide.bs.modal', this._hideModalHandler)\n\n if (this.tip) {\n this.tip.parentNode.removeChild(this.tip)\n }\n\n this._isEnabled = null\n this._timeout = null\n this._hoverState = null\n this._activeTrigger = null\n if (this._popper) {\n this._popper.destroy()\n }\n\n this._popper = null\n this.config = null\n this.tip = null\n super.dispose()\n }\n\n show() {\n if (this._element.style.display === 'none') {\n throw new Error('Please use show on visible elements')\n }\n\n if (this.isWithContent() && this._isEnabled) {\n const showEvent = EventHandler.trigger(this._element, this.constructor.Event.SHOW)\n const shadowRoot = findShadowRoot(this._element)\n const isInTheDom = shadowRoot === null ?\n this._element.ownerDocument.documentElement.contains(this._element) :\n shadowRoot.contains(this._element)\n\n if (showEvent.defaultPrevented || !isInTheDom) {\n return\n }\n\n const tip = this.getTipElement()\n const tipId = getUID(this.constructor.NAME)\n\n tip.setAttribute('id', tipId)\n this._element.setAttribute('aria-describedby', tipId)\n\n this.setContent()\n\n if (this.config.animation) {\n tip.classList.add(CLASS_NAME_FADE)\n }\n\n const placement = typeof this.config.placement === 'function' ?\n this.config.placement.call(this, tip, this._element) :\n this.config.placement\n\n const attachment = this._getAttachment(placement)\n this._addAttachmentClass(attachment)\n\n const container = this._getContainer()\n Data.setData(tip, this.constructor.DATA_KEY, this)\n\n if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n container.appendChild(tip)\n }\n\n EventHandler.trigger(this._element, this.constructor.Event.INSERTED)\n\n this._popper = Popper.createPopper(this._element, tip, this._getPopperConfig(attachment))\n\n tip.classList.add(CLASS_NAME_SHOW)\n\n const customClass = typeof this.config.customClass === 'function' ? this.config.customClass() : this.config.customClass\n if (customClass) {\n tip.classList.add(...customClass.split(' '))\n }\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement) {\n [].concat(...document.body.children).forEach(element => {\n EventHandler.on(element, 'mouseover', noop())\n })\n }\n\n const complete = () => {\n const prevHoverState = this._hoverState\n\n this._hoverState = null\n EventHandler.trigger(this._element, this.constructor.Event.SHOWN)\n\n if (prevHoverState === HOVER_STATE_OUT) {\n this._leave(null, this)\n }\n }\n\n if (this.tip.classList.contains(CLASS_NAME_FADE)) {\n const transitionDuration = getTransitionDurationFromElement(this.tip)\n EventHandler.one(this.tip, TRANSITION_END, complete)\n emulateTransitionEnd(this.tip, transitionDuration)\n } else {\n complete()\n }\n }\n }\n\n hide() {\n if (!this._popper) {\n return\n }\n\n const tip = this.getTipElement()\n const complete = () => {\n if (this._hoverState !== HOVER_STATE_SHOW && tip.parentNode) {\n tip.parentNode.removeChild(tip)\n }\n\n this._cleanTipClass()\n this._element.removeAttribute('aria-describedby')\n EventHandler.trigger(this._element, this.constructor.Event.HIDDEN)\n\n if (this._popper) {\n this._popper.destroy()\n this._popper = null\n }\n }\n\n const hideEvent = EventHandler.trigger(this._element, this.constructor.Event.HIDE)\n if (hideEvent.defaultPrevented) {\n return\n }\n\n tip.classList.remove(CLASS_NAME_SHOW)\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n [].concat(...document.body.children)\n .forEach(element => EventHandler.off(element, 'mouseover', noop))\n }\n\n this._activeTrigger[TRIGGER_CLICK] = false\n this._activeTrigger[TRIGGER_FOCUS] = false\n this._activeTrigger[TRIGGER_HOVER] = false\n\n if (this.tip.classList.contains(CLASS_NAME_FADE)) {\n const transitionDuration = getTransitionDurationFromElement(tip)\n\n EventHandler.one(tip, TRANSITION_END, complete)\n emulateTransitionEnd(tip, transitionDuration)\n } else {\n complete()\n }\n\n this._hoverState = ''\n }\n\n update() {\n if (this._popper !== null) {\n this._popper.update()\n }\n }\n\n // Protected\n\n isWithContent() {\n return Boolean(this.getTitle())\n }\n\n getTipElement() {\n if (this.tip) {\n return this.tip\n }\n\n const element = document.createElement('div')\n element.innerHTML = this.config.template\n\n this.tip = element.children[0]\n return this.tip\n }\n\n setContent() {\n const tip = this.getTipElement()\n this.setElementContent(SelectorEngine.findOne(SELECTOR_TOOLTIP_INNER, tip), this.getTitle())\n tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n }\n\n setElementContent(element, content) {\n if (element === null) {\n return\n }\n\n if (typeof content === 'object' && isElement(content)) {\n if (content.jquery) {\n content = content[0]\n }\n\n // content is a DOM node or a jQuery\n if (this.config.html) {\n if (content.parentNode !== element) {\n element.innerHTML = ''\n element.appendChild(content)\n }\n } else {\n element.textContent = content.textContent\n }\n\n return\n }\n\n if (this.config.html) {\n if (this.config.sanitize) {\n content = sanitizeHtml(content, this.config.allowList, this.config.sanitizeFn)\n }\n\n element.innerHTML = content\n } else {\n element.textContent = content\n }\n }\n\n getTitle() {\n let title = this._element.getAttribute('data-bs-original-title')\n\n if (!title) {\n title = typeof this.config.title === 'function' ?\n this.config.title.call(this._element) :\n this.config.title\n }\n\n return title\n }\n\n updateAttachment(attachment) {\n if (attachment === 'right') {\n return 'end'\n }\n\n if (attachment === 'left') {\n return 'start'\n }\n\n return attachment\n }\n\n // Private\n\n _getPopperConfig(attachment) {\n const flipModifier = {\n name: 'flip',\n options: {\n altBoundary: true\n }\n }\n\n if (this.config.fallbackPlacements) {\n flipModifier.options.fallbackPlacements = this.config.fallbackPlacements\n }\n\n const defaultBsConfig = {\n placement: attachment,\n modifiers: [\n flipModifier,\n {\n name: 'preventOverflow',\n options: {\n rootBoundary: this.config.boundary\n }\n },\n {\n name: 'arrow',\n options: {\n element: `.${this.constructor.NAME}-arrow`\n }\n },\n {\n name: 'onChange',\n enabled: true,\n phase: 'afterWrite',\n fn: data => this._handlePopperPlacementChange(data)\n }\n ],\n onFirstUpdate: data => {\n if (data.options.placement !== data.placement) {\n this._handlePopperPlacementChange(data)\n }\n }\n }\n\n return {\n ...defaultBsConfig,\n ...this.config.popperConfig\n }\n }\n\n _addAttachmentClass(attachment) {\n this.getTipElement().classList.add(`${CLASS_PREFIX}-${this.updateAttachment(attachment)}`)\n }\n\n _getContainer() {\n if (this.config.container === false) {\n return document.body\n }\n\n if (isElement(this.config.container)) {\n return this.config.container\n }\n\n return SelectorEngine.findOne(this.config.container)\n }\n\n _getAttachment(placement) {\n return AttachmentMap[placement.toUpperCase()]\n }\n\n _setListeners() {\n const triggers = this.config.trigger.split(' ')\n\n triggers.forEach(trigger => {\n if (trigger === 'click') {\n EventHandler.on(this._element, this.constructor.Event.CLICK, this.config.selector, event => this.toggle(event)\n )\n } else if (trigger !== TRIGGER_MANUAL) {\n const eventIn = trigger === TRIGGER_HOVER ?\n this.constructor.Event.MOUSEENTER :\n this.constructor.Event.FOCUSIN\n const eventOut = trigger === TRIGGER_HOVER ?\n this.constructor.Event.MOUSELEAVE :\n this.constructor.Event.FOCUSOUT\n\n EventHandler.on(this._element, eventIn, this.config.selector, event => this._enter(event))\n EventHandler.on(this._element, eventOut, this.config.selector, event => this._leave(event))\n }\n })\n\n this._hideModalHandler = () => {\n if (this._element) {\n this.hide()\n }\n }\n\n EventHandler.on(this._element.closest(`.${CLASS_NAME_MODAL}`), 'hide.bs.modal', this._hideModalHandler)\n\n if (this.config.selector) {\n this.config = {\n ...this.config,\n trigger: 'manual',\n selector: ''\n }\n } else {\n this._fixTitle()\n }\n }\n\n _fixTitle() {\n const title = this._element.getAttribute('title')\n const originalTitleType = typeof this._element.getAttribute('data-bs-original-title')\n\n if (title || originalTitleType !== 'string') {\n this._element.setAttribute('data-bs-original-title', title || '')\n if (title && !this._element.getAttribute('aria-label') && !this._element.textContent) {\n this._element.setAttribute('aria-label', title)\n }\n\n this._element.setAttribute('title', '')\n }\n }\n\n _enter(event, context) {\n const dataKey = this.constructor.DATA_KEY\n context = context || Data.getData(event.delegateTarget, dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.delegateTarget,\n this._getDelegateConfig()\n )\n Data.setData(event.delegateTarget, dataKey, context)\n }\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER\n ] = true\n }\n\n if (context.getTipElement().classList.contains(CLASS_NAME_SHOW) || context._hoverState === HOVER_STATE_SHOW) {\n context._hoverState = HOVER_STATE_SHOW\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HOVER_STATE_SHOW\n\n if (!context.config.delay || !context.config.delay.show) {\n context.show()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HOVER_STATE_SHOW) {\n context.show()\n }\n }, context.config.delay.show)\n }\n\n _leave(event, context) {\n const dataKey = this.constructor.DATA_KEY\n context = context || Data.getData(event.delegateTarget, dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.delegateTarget,\n this._getDelegateConfig()\n )\n Data.setData(event.delegateTarget, dataKey, context)\n }\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER\n ] = false\n }\n\n if (context._isWithActiveTrigger()) {\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HOVER_STATE_OUT\n\n if (!context.config.delay || !context.config.delay.hide) {\n context.hide()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HOVER_STATE_OUT) {\n context.hide()\n }\n }, context.config.delay.hide)\n }\n\n _isWithActiveTrigger() {\n for (const trigger in this._activeTrigger) {\n if (this._activeTrigger[trigger]) {\n return true\n }\n }\n\n return false\n }\n\n _getConfig(config) {\n const dataAttributes = Manipulator.getDataAttributes(this._element)\n\n Object.keys(dataAttributes).forEach(dataAttr => {\n if (DISALLOWED_ATTRIBUTES.has(dataAttr)) {\n delete dataAttributes[dataAttr]\n }\n })\n\n if (config && typeof config.container === 'object' && config.container.jquery) {\n config.container = config.container[0]\n }\n\n config = {\n ...this.constructor.Default,\n ...dataAttributes,\n ...(typeof config === 'object' && config ? config : {})\n }\n\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n }\n }\n\n if (typeof config.title === 'number') {\n config.title = config.title.toString()\n }\n\n if (typeof config.content === 'number') {\n config.content = config.content.toString()\n }\n\n typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n if (config.sanitize) {\n config.template = sanitizeHtml(config.template, config.allowList, config.sanitizeFn)\n }\n\n return config\n }\n\n _getDelegateConfig() {\n const config = {}\n\n if (this.config) {\n for (const key in this.config) {\n if (this.constructor.Default[key] !== this.config[key]) {\n config[key] = this.config[key]\n }\n }\n }\n\n return config\n }\n\n _cleanTipClass() {\n const tip = this.getTipElement()\n const tabClass = tip.getAttribute('class').match(BSCLS_PREFIX_REGEX)\n if (tabClass !== null && tabClass.length > 0) {\n tabClass.map(token => token.trim())\n .forEach(tClass => tip.classList.remove(tClass))\n }\n }\n\n _handlePopperPlacementChange(popperData) {\n const { state } = popperData\n\n if (!state) {\n return\n }\n\n this.tip = state.elements.popper\n this._cleanTipClass()\n this._addAttachmentClass(this._getAttachment(state.placement))\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY)\n const _config = typeof config === 'object' && config\n\n if (!data && /dispose|hide/.test(config)) {\n return\n }\n\n if (!data) {\n data = new Tooltip(this, _config)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Tooltip to jQuery only if jQuery is present\n */\n\nonDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Tooltip.jQueryInterface\n $.fn[NAME].Constructor = Tooltip\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Tooltip.jQueryInterface\n }\n }\n})\n\nexport default Tooltip\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery, onDOMContentLoaded } from './util/index'\nimport Data from './dom/data'\nimport SelectorEngine from './dom/selector-engine'\nimport Tooltip from './tooltip'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'popover'\nconst DATA_KEY = 'bs.popover'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst CLASS_PREFIX = 'bs-popover'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\n\nconst Default = {\n ...Tooltip.Default,\n placement: 'right',\n trigger: 'click',\n content: '',\n template: '' +\n '' +\n '' +\n '' +\n ''\n}\n\nconst DefaultType = {\n ...Tooltip.DefaultType,\n content: '(string|element|function)'\n}\n\nconst Event = {\n HIDE: `hide${EVENT_KEY}`,\n HIDDEN: `hidden${EVENT_KEY}`,\n SHOW: `show${EVENT_KEY}`,\n SHOWN: `shown${EVENT_KEY}`,\n INSERTED: `inserted${EVENT_KEY}`,\n CLICK: `click${EVENT_KEY}`,\n FOCUSIN: `focusin${EVENT_KEY}`,\n FOCUSOUT: `focusout${EVENT_KEY}`,\n MOUSEENTER: `mouseenter${EVENT_KEY}`,\n MOUSELEAVE: `mouseleave${EVENT_KEY}`\n}\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Popover extends Tooltip {\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n static get Event() {\n return Event\n }\n\n static get EVENT_KEY() {\n return EVENT_KEY\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Overrides\n\n isWithContent() {\n return this.getTitle() || this._getContent()\n }\n\n setContent() {\n const tip = this.getTipElement()\n\n // we use append for html objects to maintain js events\n this.setElementContent(SelectorEngine.findOne(SELECTOR_TITLE, tip), this.getTitle())\n let content = this._getContent()\n if (typeof content === 'function') {\n content = content.call(this._element)\n }\n\n this.setElementContent(SelectorEngine.findOne(SELECTOR_CONTENT, tip), content)\n\n tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n }\n\n // Private\n\n _addAttachmentClass(attachment) {\n this.getTipElement().classList.add(`${CLASS_PREFIX}-${this.updateAttachment(attachment)}`)\n }\n\n _getContent() {\n return this._element.getAttribute('data-bs-content') || this.config.content\n }\n\n _cleanTipClass() {\n const tip = this.getTipElement()\n const tabClass = tip.getAttribute('class').match(BSCLS_PREFIX_REGEX)\n if (tabClass !== null && tabClass.length > 0) {\n tabClass.map(token => token.trim())\n .forEach(tClass => tip.classList.remove(tClass))\n }\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY)\n const _config = typeof config === 'object' ? config : null\n\n if (!data && /dispose|hide/.test(config)) {\n return\n }\n\n if (!data) {\n data = new Popover(this, _config)\n Data.setData(this, DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Popover to jQuery only if jQuery is present\n */\n\nonDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Popover.jQueryInterface\n $.fn[NAME].Constructor = Popover\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Popover.jQueryInterface\n }\n }\n})\n\nexport default Popover\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n getjQuery,\n onDOMContentLoaded,\n getSelectorFromElement,\n getUID,\n isElement,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'scrollspy'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst Default = {\n offset: 10,\n method: 'auto',\n target: ''\n}\n\nconst DefaultType = {\n offset: 'number',\n method: 'string',\n target: '(string|element)'\n}\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_SCROLL = `scroll${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_NAV_LINKS = '.nav-link'\nconst SELECTOR_NAV_ITEMS = '.nav-item'\nconst SELECTOR_LIST_ITEMS = '.list-group-item'\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\n\nconst METHOD_OFFSET = 'offset'\nconst METHOD_POSITION = 'position'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass ScrollSpy extends BaseComponent {\n constructor(element, config) {\n super(element)\n this._scrollElement = element.tagName === 'BODY' ? window : element\n this._config = this._getConfig(config)\n this._selector = `${this._config.target} ${SELECTOR_NAV_LINKS}, ${this._config.target} ${SELECTOR_LIST_ITEMS}, ${this._config.target} .${CLASS_NAME_DROPDOWN_ITEM}`\n this._offsets = []\n this._targets = []\n this._activeTarget = null\n this._scrollHeight = 0\n\n EventHandler.on(this._scrollElement, EVENT_SCROLL, event => this._process(event))\n\n this.refresh()\n this._process()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n refresh() {\n const autoMethod = this._scrollElement === this._scrollElement.window ?\n METHOD_OFFSET :\n METHOD_POSITION\n\n const offsetMethod = this._config.method === 'auto' ?\n autoMethod :\n this._config.method\n\n const offsetBase = offsetMethod === METHOD_POSITION ?\n this._getScrollTop() :\n 0\n\n this._offsets = []\n this._targets = []\n this._scrollHeight = this._getScrollHeight()\n\n const targets = SelectorEngine.find(this._selector)\n\n targets.map(element => {\n const targetSelector = getSelectorFromElement(element)\n const target = targetSelector ? SelectorEngine.findOne(targetSelector) : null\n\n if (target) {\n const targetBCR = target.getBoundingClientRect()\n if (targetBCR.width || targetBCR.height) {\n return [\n Manipulator[offsetMethod](target).top + offsetBase,\n targetSelector\n ]\n }\n }\n\n return null\n })\n .filter(item => item)\n .sort((a, b) => a[0] - b[0])\n .forEach(item => {\n this._offsets.push(item[0])\n this._targets.push(item[1])\n })\n }\n\n dispose() {\n super.dispose()\n EventHandler.off(this._scrollElement, EVENT_KEY)\n\n this._scrollElement = null\n this._config = null\n this._selector = null\n this._offsets = null\n this._targets = null\n this._activeTarget = null\n this._scrollHeight = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...(typeof config === 'object' && config ? config : {})\n }\n\n if (typeof config.target !== 'string' && isElement(config.target)) {\n let { id } = config.target\n if (!id) {\n id = getUID(NAME)\n config.target.id = id\n }\n\n config.target = `#${id}`\n }\n\n typeCheckConfig(NAME, config, DefaultType)\n\n return config\n }\n\n _getScrollTop() {\n return this._scrollElement === window ?\n this._scrollElement.pageYOffset :\n this._scrollElement.scrollTop\n }\n\n _getScrollHeight() {\n return this._scrollElement.scrollHeight || Math.max(\n document.body.scrollHeight,\n document.documentElement.scrollHeight\n )\n }\n\n _getOffsetHeight() {\n return this._scrollElement === window ?\n window.innerHeight :\n this._scrollElement.getBoundingClientRect().height\n }\n\n _process() {\n const scrollTop = this._getScrollTop() + this._config.offset\n const scrollHeight = this._getScrollHeight()\n const maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight()\n\n if (this._scrollHeight !== scrollHeight) {\n this.refresh()\n }\n\n if (scrollTop >= maxScroll) {\n const target = this._targets[this._targets.length - 1]\n\n if (this._activeTarget !== target) {\n this._activate(target)\n }\n\n return\n }\n\n if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n this._activeTarget = null\n this._clear()\n return\n }\n\n for (let i = this._offsets.length; i--;) {\n const isActiveTarget = this._activeTarget !== this._targets[i] &&\n scrollTop >= this._offsets[i] &&\n (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1])\n\n if (isActiveTarget) {\n this._activate(this._targets[i])\n }\n }\n }\n\n _activate(target) {\n this._activeTarget = target\n\n this._clear()\n\n const queries = this._selector.split(',')\n .map(selector => `${selector}[data-bs-target=\"${target}\"],${selector}[href=\"${target}\"]`)\n\n const link = SelectorEngine.findOne(queries.join(','))\n\n if (link.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE, link.closest(SELECTOR_DROPDOWN))\n .classList.add(CLASS_NAME_ACTIVE)\n\n link.classList.add(CLASS_NAME_ACTIVE)\n } else {\n // Set triggered link as active\n link.classList.add(CLASS_NAME_ACTIVE)\n\n SelectorEngine.parents(link, SELECTOR_NAV_LIST_GROUP)\n .forEach(listGroup => {\n // Set triggered links parents as active\n // With both and markup a parent is the previous sibling of any nav ancestor\n SelectorEngine.prev(listGroup, `${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`)\n .forEach(item => item.classList.add(CLASS_NAME_ACTIVE))\n\n // Handle special case when .nav-link is inside .nav-item\n SelectorEngine.prev(listGroup, SELECTOR_NAV_ITEMS)\n .forEach(navItem => {\n SelectorEngine.children(navItem, SELECTOR_NAV_LINKS)\n .forEach(item => item.classList.add(CLASS_NAME_ACTIVE))\n })\n })\n }\n\n EventHandler.trigger(this._scrollElement, EVENT_ACTIVATE, {\n relatedTarget: target\n })\n }\n\n _clear() {\n SelectorEngine.find(this._selector)\n .filter(node => node.classList.contains(CLASS_NAME_ACTIVE))\n .forEach(node => node.classList.remove(CLASS_NAME_ACTIVE))\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY)\n const _config = typeof config === 'object' && config\n\n if (!data) {\n data = new ScrollSpy(this, _config)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n SelectorEngine.find(SELECTOR_DATA_SPY)\n .forEach(spy => new ScrollSpy(spy, Manipulator.getDataAttributes(spy)))\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .ScrollSpy to jQuery only if jQuery is present\n */\n\nonDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = ScrollSpy.jQueryInterface\n $.fn[NAME].Constructor = ScrollSpy\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return ScrollSpy.jQueryInterface\n }\n }\n})\n\nexport default ScrollSpy\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n getjQuery,\n onDOMContentLoaded,\n TRANSITION_END,\n emulateTransitionEnd,\n getElementFromSelector,\n getTransitionDurationFromElement,\n reflow\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tab'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_DISABLED = 'disabled'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ACTIVE_UL = ':scope > li > .active'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\nconst SELECTOR_DROPDOWN_ACTIVE_CHILD = ':scope > .dropdown-menu .active'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tab extends BaseComponent {\n // Getters\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n show() {\n if ((this._element.parentNode &&\n this._element.parentNode.nodeType === Node.ELEMENT_NODE &&\n this._element.classList.contains(CLASS_NAME_ACTIVE)) ||\n this._element.classList.contains(CLASS_NAME_DISABLED)) {\n return\n }\n\n let previous\n const target = getElementFromSelector(this._element)\n const listElement = this._element.closest(SELECTOR_NAV_LIST_GROUP)\n\n if (listElement) {\n const itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE\n previous = SelectorEngine.find(itemSelector, listElement)\n previous = previous[previous.length - 1]\n }\n\n let hideEvent = null\n\n if (previous) {\n hideEvent = EventHandler.trigger(previous, EVENT_HIDE, {\n relatedTarget: this._element\n })\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n relatedTarget: previous\n })\n\n if (showEvent.defaultPrevented || (hideEvent !== null && hideEvent.defaultPrevented)) {\n return\n }\n\n this._activate(this._element, listElement)\n\n const complete = () => {\n EventHandler.trigger(previous, EVENT_HIDDEN, {\n relatedTarget: this._element\n })\n EventHandler.trigger(this._element, EVENT_SHOWN, {\n relatedTarget: previous\n })\n }\n\n if (target) {\n this._activate(target, target.parentNode, complete)\n } else {\n complete()\n }\n }\n\n // Private\n\n _activate(element, container, callback) {\n const activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ?\n SelectorEngine.find(SELECTOR_ACTIVE_UL, container) :\n SelectorEngine.children(container, SELECTOR_ACTIVE)\n\n const active = activeElements[0]\n const isTransitioning = callback && (active && active.classList.contains(CLASS_NAME_FADE))\n\n const complete = () => this._transitionComplete(element, active, callback)\n\n if (active && isTransitioning) {\n const transitionDuration = getTransitionDurationFromElement(active)\n active.classList.remove(CLASS_NAME_SHOW)\n\n EventHandler.one(active, TRANSITION_END, complete)\n emulateTransitionEnd(active, transitionDuration)\n } else {\n complete()\n }\n }\n\n _transitionComplete(element, active, callback) {\n if (active) {\n active.classList.remove(CLASS_NAME_ACTIVE)\n\n const dropdownChild = SelectorEngine.findOne(SELECTOR_DROPDOWN_ACTIVE_CHILD, active.parentNode)\n\n if (dropdownChild) {\n dropdownChild.classList.remove(CLASS_NAME_ACTIVE)\n }\n\n if (active.getAttribute('role') === 'tab') {\n active.setAttribute('aria-selected', false)\n }\n }\n\n element.classList.add(CLASS_NAME_ACTIVE)\n if (element.getAttribute('role') === 'tab') {\n element.setAttribute('aria-selected', true)\n }\n\n reflow(element)\n\n if (element.classList.contains(CLASS_NAME_FADE)) {\n element.classList.add(CLASS_NAME_SHOW)\n }\n\n if (element.parentNode && element.parentNode.classList.contains(CLASS_NAME_DROPDOWN_MENU)) {\n const dropdownElement = element.closest(SELECTOR_DROPDOWN)\n\n if (dropdownElement) {\n SelectorEngine.find(SELECTOR_DROPDOWN_TOGGLE)\n .forEach(dropdown => dropdown.classList.add(CLASS_NAME_ACTIVE))\n }\n\n element.setAttribute('aria-expanded', true)\n }\n\n if (callback) {\n callback()\n }\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Data.getData(this, DATA_KEY) || new Tab(this)\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n event.preventDefault()\n\n const data = Data.getData(this, DATA_KEY) || new Tab(this)\n data.show()\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Tab to jQuery only if jQuery is present\n */\n\nonDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Tab.jQueryInterface\n $.fn[NAME].Constructor = Tab\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Tab.jQueryInterface\n }\n }\n})\n\nexport default Tab\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n getjQuery,\n onDOMContentLoaded,\n TRANSITION_END,\n emulateTransitionEnd,\n getTransitionDurationFromElement,\n reflow,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'toast'\nconst DATA_KEY = 'bs.toast'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_HIDE = 'hide'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\n\nconst DefaultType = {\n animation: 'boolean',\n autohide: 'boolean',\n delay: 'number'\n}\n\nconst Default = {\n animation: true,\n autohide: true,\n delay: 5000\n}\n\nconst SELECTOR_DATA_DISMISS = '[data-bs-dismiss=\"toast\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Toast extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._config = this._getConfig(config)\n this._timeout = null\n this._setListeners()\n }\n\n // Getters\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get Default() {\n return Default\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n show() {\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n this._clearTimeout()\n\n if (this._config.animation) {\n this._element.classList.add(CLASS_NAME_FADE)\n }\n\n const complete = () => {\n this._element.classList.remove(CLASS_NAME_SHOWING)\n this._element.classList.add(CLASS_NAME_SHOW)\n\n EventHandler.trigger(this._element, EVENT_SHOWN)\n\n if (this._config.autohide) {\n this._timeout = setTimeout(() => {\n this.hide()\n }, this._config.delay)\n }\n }\n\n this._element.classList.remove(CLASS_NAME_HIDE)\n reflow(this._element)\n this._element.classList.add(CLASS_NAME_SHOWING)\n if (this._config.animation) {\n const transitionDuration = getTransitionDurationFromElement(this._element)\n\n EventHandler.one(this._element, TRANSITION_END, complete)\n emulateTransitionEnd(this._element, transitionDuration)\n } else {\n complete()\n }\n }\n\n hide() {\n if (!this._element.classList.contains(CLASS_NAME_SHOW)) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n const complete = () => {\n this._element.classList.add(CLASS_NAME_HIDE)\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n this._element.classList.remove(CLASS_NAME_SHOW)\n if (this._config.animation) {\n const transitionDuration = getTransitionDurationFromElement(this._element)\n\n EventHandler.one(this._element, TRANSITION_END, complete)\n emulateTransitionEnd(this._element, transitionDuration)\n } else {\n complete()\n }\n }\n\n dispose() {\n this._clearTimeout()\n\n if (this._element.classList.contains(CLASS_NAME_SHOW)) {\n this._element.classList.remove(CLASS_NAME_SHOW)\n }\n\n EventHandler.off(this._element, EVENT_CLICK_DISMISS)\n\n super.dispose()\n this._config = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...(typeof config === 'object' && config ? config : {})\n }\n\n typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n return config\n }\n\n _setListeners() {\n EventHandler.on(this._element, EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, () => this.hide())\n }\n\n _clearTimeout() {\n clearTimeout(this._timeout)\n this._timeout = null\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY)\n const _config = typeof config === 'object' && config\n\n if (!data) {\n data = new Toast(this, _config)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](this)\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Toast to jQuery only if jQuery is present\n */\n\nonDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Toast.jQueryInterface\n $.fn[NAME].Constructor = Toast\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Toast.jQueryInterface\n }\n }\n})\n\nexport default Toast\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): index.umd.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Alert from './src/alert'\nimport Button from './src/button'\nimport Carousel from './src/carousel'\nimport Collapse from './src/collapse'\nimport Dropdown from './src/dropdown'\nimport Modal from './src/modal'\nimport Popover from './src/popover'\nimport ScrollSpy from './src/scrollspy'\nimport Tab from './src/tab'\nimport Toast from './src/toast'\nimport Tooltip from './src/tooltip'\n\nexport default {\n Alert,\n Button,\n Carousel,\n Collapse,\n Dropdown,\n Modal,\n Popover,\n ScrollSpy,\n Tab,\n Toast,\n Tooltip\n}\n"],"names":["MAX_UID","MILLISECONDS_MULTIPLIER","TRANSITION_END","toType","obj","undefined","toString","call","match","toLowerCase","getUID","prefix","Math","floor","random","document","getElementById","getSelector","element","selector","getAttribute","hrefAttr","trim","getSelectorFromElement","querySelector","getElementFromSelector","getTransitionDurationFromElement","window","getComputedStyle","transitionDuration","transitionDelay","floatTransitionDuration","Number","parseFloat","floatTransitionDelay","split","triggerTransitionEnd","dispatchEvent","Event","isElement","nodeType","emulateTransitionEnd","duration","called","durationPadding","emulatedDuration","listener","removeEventListener","addEventListener","setTimeout","typeCheckConfig","componentName","config","configTypes","Object","keys","forEach","property","expectedTypes","value","valueType","RegExp","test","Error","toUpperCase","isVisible","style","parentNode","elementStyle","parentNodeStyle","display","visibility","findShadowRoot","documentElement","attachShadow","getRootNode","root","ShadowRoot","noop","reflow","offsetHeight","getjQuery","jQuery","body","hasAttribute","onDOMContentLoaded","callback","readyState","isRTL","dir","mapData","storeData","id","set","key","data","bsKey","get","keyProperties","delete","Data","setData","instance","getData","removeData","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","nativeEvents","Set","getUidEvent","uid","getEvent","bootstrapHandler","fn","handler","event","delegateTarget","oneOff","EventHandler","off","type","apply","bootstrapDelegationHandler","domElements","querySelectorAll","target","i","length","findHandler","events","delegationSelector","uidEventList","len","originalHandler","normalizeParams","originalTypeEvent","delegationFn","delegation","typeEvent","replace","custom","isNative","has","addHandler","handlers","previousFn","removeHandler","Boolean","removeNamespacedHandlers","namespace","storeElementEvent","handlerKey","includes","on","one","inNamespace","isNamespace","startsWith","elementEvent","slice","keyHandlers","trigger","args","$","jQueryEvent","bubbles","nativeDispatch","defaultPrevented","evt","isPropagationStopped","isImmediatePropagationStopped","isDefaultPrevented","createEvent","initEvent","CustomEvent","cancelable","defineProperty","preventDefault","VERSION","BaseComponent","_element","constructor","DATA_KEY","dispose","getInstance","NAME","EVENT_KEY","DATA_API_KEY","SELECTOR_DISMISS","EVENT_CLOSE","EVENT_CLOSED","EVENT_CLICK_DATA_API","CLASSNAME_ALERT","CLASSNAME_FADE","CLASSNAME_SHOW","Alert","close","rootElement","_getRootElement","customEvent","_triggerCloseEvent","_removeElement","closest","classList","remove","contains","_destroyElement","removeChild","jQueryInterface","each","handleDismiss","alertInstance","JQUERY_NO_CONFLICT","Constructor","noConflict","CLASS_NAME_ACTIVE","SELECTOR_DATA_TOGGLE","Button","toggle","setAttribute","button","normalizeData","val","normalizeDataKey","chr","Manipulator","setDataAttribute","removeDataAttribute","removeAttribute","getDataAttributes","attributes","dataset","filter","pureKey","charAt","getDataAttribute","offset","rect","getBoundingClientRect","top","scrollTop","left","scrollLeft","position","offsetTop","offsetLeft","NODE_TEXT","SelectorEngine","matches","find","concat","Element","prototype","findOne","children","child","parents","ancestor","Node","ELEMENT_NODE","push","prev","previous","previousElementSibling","next","nextElementSibling","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","TOUCHEVENT_COMPAT_WAIT","SWIPE_THRESHOLD","Default","interval","keyboard","slide","pause","wrap","touch","DefaultType","DIRECTION_NEXT","DIRECTION_PREV","DIRECTION_LEFT","DIRECTION_RIGHT","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERDOWN","EVENT_POINTERUP","EVENT_DRAG_START","EVENT_LOAD_DATA_API","CLASS_NAME_CAROUSEL","CLASS_NAME_SLIDE","CLASS_NAME_END","CLASS_NAME_START","CLASS_NAME_NEXT","CLASS_NAME_PREV","CLASS_NAME_POINTER_EVENT","SELECTOR_ACTIVE","SELECTOR_ACTIVE_ITEM","SELECTOR_ITEM","SELECTOR_ITEM_IMG","SELECTOR_NEXT_PREV","SELECTOR_INDICATORS","SELECTOR_DATA_SLIDE","SELECTOR_DATA_RIDE","PointerType","TOUCH","PEN","Carousel","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","touchStartX","touchDeltaX","_config","_getConfig","_indicatorsElement","_touchSupported","navigator","maxTouchPoints","_pointerEvent","PointerEvent","_addEventListeners","_slide","nextWhenVisible","hidden","cycle","clearInterval","_updateInterval","setInterval","visibilityState","bind","to","index","activeIndex","_getItemIndex","direction","_handleSwipe","absDeltax","abs","_keydown","_addTouchEventListeners","start","pointerType","clientX","touches","move","end","clearTimeout","itemImg","e","add","tagName","indexOf","_getItemByDirection","activeElement","isNextDirection","isPrevDirection","lastItemIndex","isGoingToWrap","delta","itemIndex","_triggerSlideEvent","relatedTarget","eventDirectionName","targetIndex","fromIndex","from","_setActiveIndicatorElement","indicators","nextIndicator","elementInterval","parseInt","defaultInterval","activeElementIndex","nextElement","nextElementIndex","isCycling","directionalClassName","orderClassName","slideEvent","carouselInterface","action","TypeError","ride","dataApiClickHandler","slideIndex","carousels","parent","EVENT_SHOW","EVENT_SHOWN","EVENT_HIDE","EVENT_HIDDEN","CLASS_NAME_SHOW","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_COLLAPSED","WIDTH","HEIGHT","SELECTOR_ACTIVES","Collapse","_isTransitioning","_triggerArray","toggleList","elem","filterElement","foundElem","_selector","_parent","_getParent","_addAriaAndCollapsedClass","hide","show","actives","activesData","container","tempActiveData","startEvent","elemActive","collapseInterface","dimension","_getDimension","setTransitioning","complete","capitalizedDimension","scrollSize","triggerArrayLength","isTransitioning","jquery","selected","triggerArray","isOpen","triggerData","selectorElements","effect","hash","allPlacements","placements","popperOffsets","computeStyles","applyStyles","createPopper","defaultModifiers","flip","preventOverflow","arrow","ESCAPE_KEY","SPACE_KEY","TAB_KEY","ARROW_UP_KEY","ARROW_DOWN_KEY","RIGHT_MOUSE_BUTTON","REGEXP_KEYDOWN","EVENT_CLICK","EVENT_KEYDOWN_DATA_API","EVENT_KEYUP_DATA_API","CLASS_NAME_DISABLED","CLASS_NAME_DROPUP","CLASS_NAME_DROPEND","CLASS_NAME_DROPSTART","CLASS_NAME_NAVBAR","SELECTOR_FORM_CHILD","SELECTOR_MENU","SELECTOR_NAVBAR_NAV","SELECTOR_VISIBLE_ITEMS","PLACEMENT_TOP","PLACEMENT_TOPEND","PLACEMENT_BOTTOM","PLACEMENT_BOTTOMEND","PLACEMENT_RIGHT","PLACEMENT_LEFT","boundary","reference","popperConfig","Dropdown","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","disabled","isActive","clearMenus","getParentFromElement","showEvent","Popper","referenceElement","_getPopperConfig","focus","hideEvent","destroy","update","stopPropagation","_getPlacement","parentDropdown","isEnd","getPropertyValue","placement","modifiers","name","options","altBoundary","rootBoundary","enabled","dropdownInterface","toggles","context","clickEvent","dropdownMenu","dataApiKeydownHandler","items","backdrop","EVENT_HIDE_PREVENTED","EVENT_FOCUSIN","EVENT_RESIZE","EVENT_CLICK_DISMISS","EVENT_KEYDOWN_DISMISS","EVENT_MOUSEUP_DISMISS","EVENT_MOUSEDOWN_DISMISS","CLASS_NAME_SCROLLBAR_MEASURER","CLASS_NAME_BACKDROP","CLASS_NAME_OPEN","CLASS_NAME_FADE","CLASS_NAME_STATIC","SELECTOR_DIALOG","SELECTOR_MODAL_BODY","SELECTOR_DATA_DISMISS","SELECTOR_FIXED_CONTENT","SELECTOR_STICKY_CONTENT","Modal","_dialog","_backdrop","_isShown","_isBodyOverflowing","_ignoreBackdropClick","_scrollbarWidth","_checkScrollbar","_setScrollbar","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","transition","_hideModal","htmlElement","handleUpdate","modalBody","appendChild","_enforceFocus","transitionComplete","_triggerBackdropTransition","_resetAdjustments","_resetScrollbar","_removeBackdrop","animate","createElement","className","currentTarget","backdropTransitionDuration","callbackRemove","isModalOverflowing","scrollHeight","clientHeight","overflowY","modalTransitionDuration","paddingLeft","paddingRight","round","right","innerWidth","_getScrollbarWidth","actualPadding","calculatedPadding","actualMargin","marginRight","calculatedMargin","padding","margin","scrollDiv","scrollbarWidth","width","clientWidth","uriAttrs","ARIA_ATTRIBUTE_PATTERN","SAFE_URL_PATTERN","DATA_URL_PATTERN","allowedAttribute","attr","allowedAttributeList","attrName","nodeName","nodeValue","regExp","attrRegex","DefaultAllowlist","a","area","b","br","col","code","div","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","p","pre","s","small","span","sub","sup","strong","u","ul","sanitizeHtml","unsafeHtml","allowList","sanitizeFn","domParser","DOMParser","createdDocument","parseFromString","allowlistKeys","elements","el","elName","attributeList","allowedAttributes","innerHTML","CLASS_PREFIX","BSCLS_PREFIX_REGEX","DISALLOWED_ATTRIBUTES","animation","template","title","delay","html","fallbackPlacements","customClass","sanitize","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","HIDE","HIDDEN","SHOW","SHOWN","INSERTED","CLICK","FOCUSIN","FOCUSOUT","MOUSEENTER","MOUSELEAVE","CLASS_NAME_MODAL","HOVER_STATE_SHOW","HOVER_STATE_OUT","SELECTOR_TOOLTIP_INNER","TRIGGER_HOVER","TRIGGER_FOCUS","TRIGGER_CLICK","TRIGGER_MANUAL","Tooltip","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","enable","disable","toggleEnabled","dataKey","_getDelegateConfig","click","_isWithActiveTrigger","_enter","_leave","getTipElement","_hideModalHandler","isWithContent","shadowRoot","isInTheDom","ownerDocument","tipId","setContent","attachment","_getAttachment","_addAttachmentClass","_getContainer","prevHoverState","_cleanTipClass","getTitle","setElementContent","content","textContent","updateAttachment","flipModifier","defaultBsConfig","phase","_handlePopperPlacementChange","onFirstUpdate","triggers","eventIn","eventOut","_fixTitle","originalTitleType","dataAttributes","dataAttr","tabClass","map","token","tClass","popperData","state","popper","SELECTOR_TITLE","SELECTOR_CONTENT","Popover","_getContent","method","EVENT_ACTIVATE","EVENT_SCROLL","CLASS_NAME_DROPDOWN_ITEM","SELECTOR_DATA_SPY","SELECTOR_NAV_LIST_GROUP","SELECTOR_NAV_LINKS","SELECTOR_NAV_ITEMS","SELECTOR_LIST_ITEMS","SELECTOR_DROPDOWN","SELECTOR_DROPDOWN_TOGGLE","METHOD_OFFSET","METHOD_POSITION","ScrollSpy","_scrollElement","_offsets","_targets","_activeTarget","_scrollHeight","_process","refresh","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","targets","targetSelector","targetBCR","height","item","sort","pageYOffset","max","_getOffsetHeight","innerHeight","maxScroll","_activate","_clear","isActiveTarget","queries","link","join","listGroup","navItem","node","spy","CLASS_NAME_DROPDOWN_MENU","SELECTOR_ACTIVE_UL","SELECTOR_DROPDOWN_ACTIVE_CHILD","Tab","listElement","itemSelector","activeElements","active","_transitionComplete","dropdownChild","dropdownElement","dropdown","CLASS_NAME_HIDE","CLASS_NAME_SHOWING","autohide","Toast","_clearTimeout"],"mappings":"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"} \ No newline at end of file diff --git a/dist/js/bootstrap.bundle.min.js b/dist/js/bootstrap.bundle.min.js deleted file mode 100644 index 4aa914f4b..000000000 --- a/dist/js/bootstrap.bundle.min.js +++ /dev/null @@ -1,7 +0,0 @@ -/*! - * Bootstrap v5.0.0-beta1 (https://getbootstrap.com/) - * Copyright 2011-2020 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).bootstrap=e()}(this,(function(){"use strict";function t(t,e){for(var n=0;n0,i._pointerEvent=Boolean(window.PointerEvent),i._addEventListeners(),i}i(o,t);var r=o.prototype;return r.next=function(){this._isSliding||this._slide("next")},r.nextWhenVisible=function(){!document.hidden&&g(this._element)&&this.next()},r.prev=function(){this._isSliding||this._slide("prev")},r.pause=function(t){t||(this._isPaused=!0),q.findOne(".carousel-item-next, .carousel-item-prev",this._element)&&(f(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null},r.cycle=function(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config&&this._config.interval&&!this._isPaused&&(this._updateInterval(),this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))},r.to=function(t){var e=this;this._activeElement=q.findOne(".active.carousel-item",this._element);var n=this._getItemIndex(this._activeElement);if(!(t>this._items.length-1||t<0))if(this._isSliding)H.one(this._element,"slid.bs.carousel",(function(){return e.to(t)}));else{if(n===t)return this.pause(),void this.cycle();var i=t>n?"next":"prev";this._slide(i,this._items[t])}},r.dispose=function(){t.prototype.dispose.call(this),H.off(this._element,V),this._items=null,this._config=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null},r._getConfig=function(t){return t=n({},X,t),p(z,t,$),t},r._handleSwipe=function(){var t=Math.abs(this.touchDeltaX);if(!(t<=40)){var e=t/this.touchDeltaX;this.touchDeltaX=0,e>0&&this.prev(),e<0&&this.next()}},r._addEventListeners=function(){var t=this;this._config.keyboard&&H.on(this._element,"keydown.bs.carousel",(function(e){return t._keydown(e)})),"hover"===this._config.pause&&(H.on(this._element,"mouseenter.bs.carousel",(function(e){return t.pause(e)})),H.on(this._element,"mouseleave.bs.carousel",(function(e){return t.cycle(e)}))),this._config.touch&&this._touchSupported&&this._addTouchEventListeners()},r._addTouchEventListeners=function(){var t=this,e=function(e){t._pointerEvent&&G[e.pointerType.toUpperCase()]?t.touchStartX=e.clientX:t._pointerEvent||(t.touchStartX=e.touches[0].clientX)},n=function(e){t._pointerEvent&&G[e.pointerType.toUpperCase()]&&(t.touchDeltaX=e.clientX-t.touchStartX),t._handleSwipe(),"hover"===t._config.pause&&(t.pause(),t.touchTimeout&&clearTimeout(t.touchTimeout),t.touchTimeout=setTimeout((function(e){return t.cycle(e)}),500+t._config.interval))};q.find(".carousel-item img",this._element).forEach((function(t){H.on(t,"dragstart.bs.carousel",(function(t){return t.preventDefault()}))})),this._pointerEvent?(H.on(this._element,"pointerdown.bs.carousel",(function(t){return e(t)})),H.on(this._element,"pointerup.bs.carousel",(function(t){return n(t)})),this._element.classList.add("pointer-event")):(H.on(this._element,"touchstart.bs.carousel",(function(t){return e(t)})),H.on(this._element,"touchmove.bs.carousel",(function(e){return function(e){e.touches&&e.touches.length>1?t.touchDeltaX=0:t.touchDeltaX=e.touches[0].clientX-t.touchStartX}(e)})),H.on(this._element,"touchend.bs.carousel",(function(t){return n(t)})))},r._keydown=function(t){if(!/input|textarea/i.test(t.target.tagName))switch(t.key){case"ArrowLeft":t.preventDefault(),this.prev();break;case"ArrowRight":t.preventDefault(),this.next()}},r._getItemIndex=function(t){return this._items=t&&t.parentNode?q.find(".carousel-item",t.parentNode):[],this._items.indexOf(t)},r._getItemByDirection=function(t,e){var n="next"===t,i="prev"===t,o=this._getItemIndex(e),r=this._items.length-1;if((i&&0===o||n&&o===r)&&!this._config.wrap)return e;var s=(o+("prev"===t?-1:1))%this._items.length;return-1===s?this._items[this._items.length-1]:this._items[s]},r._triggerSlideEvent=function(t,e){var n=this._getItemIndex(t),i=this._getItemIndex(q.findOne(".active.carousel-item",this._element));return H.trigger(this._element,"slide.bs.carousel",{relatedTarget:t,direction:e,from:i,to:n})},r._setActiveIndicatorElement=function(t){if(this._indicatorsElement){for(var e=q.find(".active",this._indicatorsElement),n=0;n0)for(var i=0;i=0}function wt(t){return((ht(t)?t.ownerDocument:t.document)||window.document).documentElement}function Et(t){return"html"===ft(t)?t:t.assignedSlot||t.parentNode||t.host||wt(t)}function Tt(t){if(!pt(t)||"fixed"===bt(t).position)return null;var e=t.offsetParent;if(e){var n=wt(e);if("body"===ft(e)&&"static"===bt(e).position&&"static"!==bt(n).position)return n}return e}function kt(t){for(var e=dt(t),n=Tt(t);n&&yt(n)&&"static"===bt(n).position;)n=Tt(n);return n&&"body"===ft(n)&&"static"===bt(n).position?e:n||function(t){for(var e=Et(t);pt(e)&&["html","body"].indexOf(ft(e))<0;){var n=bt(e);if("none"!==n.transform||"none"!==n.perspective||n.willChange&&"auto"!==n.willChange)return e;e=e.parentNode}return null}(t)||e}function Ot(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function Lt(t,e,n){return Math.max(t,Math.min(e,n))}function At(t){return Object.assign(Object.assign({},{top:0,right:0,bottom:0,left:0}),t)}function Ct(t,e){return e.reduce((function(e,n){return e[n]=t,e}),{})}var Dt={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,n=t.state,i=t.name,o=n.elements.arrow,r=n.modifiersData.popperOffsets,s=mt(n.placement),a=Ot(s),l=[st,rt].indexOf(s)>=0?"height":"width";if(o&&r){var c=n.modifiersData[i+"#persistent"].padding,u=vt(o),f="y"===a?it:st,d="y"===a?ot:rt,h=n.rects.reference[l]+n.rects.reference[a]-r[a]-n.rects.popper[l],p=r[a]-n.rects.reference[a],g=kt(o),m=g?"y"===a?g.clientHeight||0:g.clientWidth||0:0,v=h/2-p/2,_=c[f],b=m-u[l]-c[d],y=m/2-u[l]/2+v,w=Lt(_,y,b),E=a;n.modifiersData[i]=((e={})[E]=w,e.centerOffset=w-y,e)}},effect:function(t){var e=t.state,n=t.options,i=t.name,o=n.element,r=void 0===o?"[data-popper-arrow]":o,s=n.padding,a=void 0===s?0:s;null!=r&&("string"!=typeof r||(r=e.elements.popper.querySelector(r)))&&_t(e.elements.popper,r)&&(e.elements.arrow=r,e.modifiersData[i+"#persistent"]={padding:At("number"!=typeof a?a:Ct(a,at))})},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]},xt={top:"auto",right:"auto",bottom:"auto",left:"auto"};function St(t){var e,n=t.popper,i=t.popperRect,o=t.placement,r=t.offsets,s=t.position,a=t.gpuAcceleration,l=t.adaptive,c=function(t){var e=t.x,n=t.y,i=window.devicePixelRatio||1;return{x:Math.round(e*i)/i||0,y:Math.round(n*i)/i||0}}(r),u=c.x,f=c.y,d=r.hasOwnProperty("x"),h=r.hasOwnProperty("y"),p=st,g=it,m=window;if(l){var v=kt(n);v===dt(n)&&(v=wt(n)),o===it&&(g=ot,f-=v.clientHeight-i.height,f*=a?1:-1),o===st&&(p=rt,u-=v.clientWidth-i.width,u*=a?1:-1)}var _,b=Object.assign({position:s},l&&xt);return a?Object.assign(Object.assign({},b),{},((_={})[g]=h?"0":"",_[p]=d?"0":"",_.transform=(m.devicePixelRatio||1)<2?"translate("+u+"px, "+f+"px)":"translate3d("+u+"px, "+f+"px, 0)",_)):Object.assign(Object.assign({},b),{},((e={})[g]=h?f+"px":"",e[p]=d?u+"px":"",e.transform="",e))}var jt={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var e=t.state,n=t.options,i=n.gpuAcceleration,o=void 0===i||i,r=n.adaptive,s=void 0===r||r,a={placement:mt(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:o};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign(Object.assign({},e.styles.popper),St(Object.assign(Object.assign({},a),{},{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:s})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign(Object.assign({},e.styles.arrow),St(Object.assign(Object.assign({},a),{},{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1})))),e.attributes.popper=Object.assign(Object.assign({},e.attributes.popper),{},{"data-popper-placement":e.placement})},data:{}},Nt={passive:!0};var It={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var e=t.state,n=t.instance,i=t.options,o=i.scroll,r=void 0===o||o,s=i.resize,a=void 0===s||s,l=dt(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return r&&c.forEach((function(t){t.addEventListener("scroll",n.update,Nt)})),a&&l.addEventListener("resize",n.update,Nt),function(){r&&c.forEach((function(t){t.removeEventListener("scroll",n.update,Nt)})),a&&l.removeEventListener("resize",n.update,Nt)}},data:{}},Pt={left:"right",right:"left",bottom:"top",top:"bottom"};function Mt(t){return t.replace(/left|right|bottom|top/g,(function(t){return Pt[t]}))}var Bt={start:"end",end:"start"};function Ht(t){return t.replace(/start|end/g,(function(t){return Bt[t]}))}function Rt(t){var e=t.getBoundingClientRect();return{width:e.width,height:e.height,top:e.top,right:e.right,bottom:e.bottom,left:e.left,x:e.left,y:e.top}}function Wt(t){var e=dt(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function Kt(t){return Rt(wt(t)).left+Wt(t).scrollLeft}function Qt(t){var e=bt(t),n=e.overflow,i=e.overflowX,o=e.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+i)}function Ut(t,e){void 0===e&&(e=[]);var n=function t(e){return["html","body","#document"].indexOf(ft(e))>=0?e.ownerDocument.body:pt(e)&&Qt(e)?e:t(Et(e))}(t),i="body"===ft(n),o=dt(n),r=i?[o].concat(o.visualViewport||[],Qt(n)?n:[]):n,s=e.concat(r);return i?s:s.concat(Ut(Et(r)))}function Ft(t){return Object.assign(Object.assign({},t),{},{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function Yt(t,e){return"viewport"===e?Ft(function(t){var e=dt(t),n=wt(t),i=e.visualViewport,o=n.clientWidth,r=n.clientHeight,s=0,a=0;return i&&(o=i.width,r=i.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(s=i.offsetLeft,a=i.offsetTop)),{width:o,height:r,x:s+Kt(t),y:a}}(t)):pt(e)?function(t){var e=Rt(t);return e.top=e.top+t.clientTop,e.left=e.left+t.clientLeft,e.bottom=e.top+t.clientHeight,e.right=e.left+t.clientWidth,e.width=t.clientWidth,e.height=t.clientHeight,e.x=e.left,e.y=e.top,e}(e):Ft(function(t){var e=wt(t),n=Wt(t),i=t.ownerDocument.body,o=Math.max(e.scrollWidth,e.clientWidth,i?i.scrollWidth:0,i?i.clientWidth:0),r=Math.max(e.scrollHeight,e.clientHeight,i?i.scrollHeight:0,i?i.clientHeight:0),s=-n.scrollLeft+Kt(t),a=-n.scrollTop;return"rtl"===bt(i||e).direction&&(s+=Math.max(e.clientWidth,i?i.clientWidth:0)-o),{width:o,height:r,x:s,y:a}}(wt(t)))}function qt(t,e,n){var i="clippingParents"===e?function(t){var e=Ut(Et(t)),n=["absolute","fixed"].indexOf(bt(t).position)>=0&&pt(t)?kt(t):t;return ht(n)?e.filter((function(t){return ht(t)&&_t(t,n)&&"body"!==ft(t)})):[]}(t):[].concat(e),o=[].concat(i,[n]),r=o[0],s=o.reduce((function(e,n){var i=Yt(t,n);return e.top=Math.max(i.top,e.top),e.right=Math.min(i.right,e.right),e.bottom=Math.min(i.bottom,e.bottom),e.left=Math.max(i.left,e.left),e}),Yt(t,r));return s.width=s.right-s.left,s.height=s.bottom-s.top,s.x=s.left,s.y=s.top,s}function zt(t){return t.split("-")[1]}function Vt(t){var e,n=t.reference,i=t.element,o=t.placement,r=o?mt(o):null,s=o?zt(o):null,a=n.x+n.width/2-i.width/2,l=n.y+n.height/2-i.height/2;switch(r){case it:e={x:a,y:n.y-i.height};break;case ot:e={x:a,y:n.y+n.height};break;case rt:e={x:n.x+n.width,y:l};break;case st:e={x:n.x-i.width,y:l};break;default:e={x:n.x,y:n.y}}var c=r?Ot(r):null;if(null!=c){var u="y"===c?"height":"width";switch(s){case"start":e[c]=Math.floor(e[c])-Math.floor(n[u]/2-i[u]/2);break;case"end":e[c]=Math.floor(e[c])+Math.ceil(n[u]/2-i[u]/2)}}return e}function Xt(t,e){void 0===e&&(e={});var n=e,i=n.placement,o=void 0===i?t.placement:i,r=n.boundary,s=void 0===r?"clippingParents":r,a=n.rootBoundary,l=void 0===a?"viewport":a,c=n.elementContext,u=void 0===c?"popper":c,f=n.altBoundary,d=void 0!==f&&f,h=n.padding,p=void 0===h?0:h,g=At("number"!=typeof p?p:Ct(p,at)),m="popper"===u?"reference":"popper",v=t.elements.reference,_=t.rects.popper,b=t.elements[d?m:u],y=qt(ht(b)?b:b.contextElement||wt(t.elements.popper),s,l),w=Rt(v),E=Vt({reference:w,element:_,strategy:"absolute",placement:o}),T=Ft(Object.assign(Object.assign({},_),E)),k="popper"===u?T:w,O={top:y.top-k.top+g.top,bottom:k.bottom-y.bottom+g.bottom,left:y.left-k.left+g.left,right:k.right-y.right+g.right},L=t.modifiersData.offset;if("popper"===u&&L){var A=L[o];Object.keys(O).forEach((function(t){var e=[rt,ot].indexOf(t)>=0?1:-1,n=[it,ot].indexOf(t)>=0?"y":"x";O[t]+=A[n]*e}))}return O}function $t(t,e){void 0===e&&(e={});var n=e,i=n.placement,o=n.boundary,r=n.rootBoundary,s=n.padding,a=n.flipVariations,l=n.allowedAutoPlacements,c=void 0===l?ct:l,u=zt(i),f=u?a?lt:lt.filter((function(t){return zt(t)===u})):at,d=f.filter((function(t){return c.indexOf(t)>=0}));0===d.length&&(d=f);var h=d.reduce((function(e,n){return e[n]=Xt(t,{placement:n,boundary:o,rootBoundary:r,padding:s})[mt(n)],e}),{});return Object.keys(h).sort((function(t,e){return h[t]-h[e]}))}var Gt={name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,n=t.options,i=t.name;if(!e.modifiersData[i]._skip){for(var o=n.mainAxis,r=void 0===o||o,s=n.altAxis,a=void 0===s||s,l=n.fallbackPlacements,c=n.padding,u=n.boundary,f=n.rootBoundary,d=n.altBoundary,h=n.flipVariations,p=void 0===h||h,g=n.allowedAutoPlacements,m=e.options.placement,v=mt(m),_=l||(v===m||!p?[Mt(m)]:function(t){if("auto"===mt(t))return[];var e=Mt(t);return[Ht(t),e,Ht(e)]}(m)),b=[m].concat(_).reduce((function(t,n){return t.concat("auto"===mt(n)?$t(e,{placement:n,boundary:u,rootBoundary:f,padding:c,flipVariations:p,allowedAutoPlacements:g}):n)}),[]),y=e.rects.reference,w=e.rects.popper,E=new Map,T=!0,k=b[0],O=0;O=0,x=D?"width":"height",S=Xt(e,{placement:L,boundary:u,rootBoundary:f,altBoundary:d,padding:c}),j=D?C?rt:st:C?ot:it;y[x]>w[x]&&(j=Mt(j));var N=Mt(j),I=[];if(r&&I.push(S[A]<=0),a&&I.push(S[j]<=0,S[N]<=0),I.every((function(t){return t}))){k=L,T=!1;break}E.set(L,I)}if(T)for(var P=function(t){var e=b.find((function(e){var n=E.get(e);if(n)return n.slice(0,t).every((function(t){return t}))}));if(e)return k=e,"break"},M=p?3:1;M>0;M--){if("break"===P(M))break}e.placement!==k&&(e.modifiersData[i]._skip=!0,e.placement=k,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function Zt(t,e,n){return void 0===n&&(n={x:0,y:0}),{top:t.top-e.height-n.y,right:t.right-e.width+n.x,bottom:t.bottom-e.height+n.y,left:t.left-e.width-n.x}}function Jt(t){return[it,rt,ot,st].some((function(e){return t[e]>=0}))}var te={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var e=t.state,n=t.name,i=e.rects.reference,o=e.rects.popper,r=e.modifiersData.preventOverflow,s=Xt(e,{elementContext:"reference"}),a=Xt(e,{altBoundary:!0}),l=Zt(s,i),c=Zt(a,o,r),u=Jt(l),f=Jt(c);e.modifiersData[n]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:u,hasPopperEscaped:f},e.attributes.popper=Object.assign(Object.assign({},e.attributes.popper),{},{"data-popper-reference-hidden":u,"data-popper-escaped":f})}};var ee={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,n=t.options,i=t.name,o=n.offset,r=void 0===o?[0,0]:o,s=ct.reduce((function(t,n){return t[n]=function(t,e,n){var i=mt(t),o=[st,it].indexOf(i)>=0?-1:1,r="function"==typeof n?n(Object.assign(Object.assign({},e),{},{placement:t})):n,s=r[0],a=r[1];return s=s||0,a=(a||0)*o,[st,rt].indexOf(i)>=0?{x:a,y:s}:{x:s,y:a}}(n,e.rects,r),t}),{}),a=s[e.placement],l=a.x,c=a.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=l,e.modifiersData.popperOffsets.y+=c),e.modifiersData[i]=s}};var ne={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,n=t.name;e.modifiersData[n]=Vt({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})},data:{}};var ie={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,n=t.options,i=t.name,o=n.mainAxis,r=void 0===o||o,s=n.altAxis,a=void 0!==s&&s,l=n.boundary,c=n.rootBoundary,u=n.altBoundary,f=n.padding,d=n.tether,h=void 0===d||d,p=n.tetherOffset,g=void 0===p?0:p,m=Xt(e,{boundary:l,rootBoundary:c,padding:f,altBoundary:u}),v=mt(e.placement),_=zt(e.placement),b=!_,y=Ot(v),w="x"===y?"y":"x",E=e.modifiersData.popperOffsets,T=e.rects.reference,k=e.rects.popper,O="function"==typeof g?g(Object.assign(Object.assign({},e.rects),{},{placement:e.placement})):g,L={x:0,y:0};if(E){if(r){var A="y"===y?it:st,C="y"===y?ot:rt,D="y"===y?"height":"width",x=E[y],S=E[y]+m[A],j=E[y]-m[C],N=h?-k[D]/2:0,I="start"===_?T[D]:k[D],P="start"===_?-k[D]:-T[D],M=e.elements.arrow,B=h&&M?vt(M):{width:0,height:0},H=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},R=H[A],W=H[C],K=Lt(0,T[D],B[D]),Q=b?T[D]/2-N-K-R-O:I-K-R-O,U=b?-T[D]/2+N+K+W+O:P+K+W+O,F=e.elements.arrow&&kt(e.elements.arrow),Y=F?"y"===y?F.clientTop||0:F.clientLeft||0:0,q=e.modifiersData.offset?e.modifiersData.offset[e.placement][y]:0,z=E[y]+Q-q-Y,V=E[y]+U-q,X=Lt(h?Math.min(S,z):S,x,h?Math.max(j,V):j);E[y]=X,L[y]=X-x}if(a){var $="x"===y?it:st,G="x"===y?ot:rt,Z=E[w],J=Lt(Z+m[$],Z,Z-m[G]);E[w]=J,L[w]=J-Z}e.modifiersData[i]=L}},requiresIfExists:["offset"]};function oe(t,e,n){void 0===n&&(n=!1);var i,o,r=wt(e),s=Rt(t),a=pt(e),l={scrollLeft:0,scrollTop:0},c={x:0,y:0};return(a||!a&&!n)&&(("body"!==ft(e)||Qt(r))&&(l=(i=e)!==dt(i)&&pt(i)?{scrollLeft:(o=i).scrollLeft,scrollTop:o.scrollTop}:Wt(i)),pt(e)?((c=Rt(e)).x+=e.clientLeft,c.y+=e.clientTop):r&&(c.x=Kt(r))),{x:s.left+l.scrollLeft-c.x,y:s.top+l.scrollTop-c.y,width:s.width,height:s.height}}function re(t){var e=new Map,n=new Set,i=[];return t.forEach((function(t){e.set(t.name,t)})),t.forEach((function(t){n.has(t.name)||function t(o){n.add(o.name),[].concat(o.requires||[],o.requiresIfExists||[]).forEach((function(i){if(!n.has(i)){var o=e.get(i);o&&t(o)}})),i.push(o)}(t)})),i}var se={placement:"bottom",modifiers:[],strategy:"absolute"};function ae(){for(var t=arguments.length,e=new Array(t),n=0;n0&&r--,"ArrowDown"===t.key&&rdocument.documentElement.clientHeight;e||(this._element.style.overflowY="hidden"),this._element.classList.add("modal-static");var n=u(this._dialog);H.off(this._element,"transitionend"),H.one(this._element,"transitionend",(function(){t._element.classList.remove("modal-static"),e||(H.one(t._element,"transitionend",(function(){t._element.style.overflowY=""})),h(t._element,n))})),h(this._element,n),this._element.focus()}},r._adjustDialog=function(){var t=this._element.scrollHeight>document.documentElement.clientHeight;(!this._isBodyOverflowing&&t&&!y||this._isBodyOverflowing&&!t&&y)&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),(this._isBodyOverflowing&&!t&&!y||!this._isBodyOverflowing&&t&&y)&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},r._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},r._checkScrollbar=function(){var t=document.body.getBoundingClientRect();this._isBodyOverflowing=Math.round(t.left+t.right)',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",container:!1,fallbackPlacements:null,boundary:"clippingParents",customClass:"",sanitize:!0,sanitizeFn:null,allowList:xe,popperConfig:null},He={HIDE:"hide.bs.tooltip",HIDDEN:"hidden.bs.tooltip",SHOW:"show.bs.tooltip",SHOWN:"shown.bs.tooltip",INSERTED:"inserted.bs.tooltip",CLICK:"click.bs.tooltip",FOCUSIN:"focusin.bs.tooltip",FOCUSOUT:"focusout.bs.tooltip",MOUSEENTER:"mouseenter.bs.tooltip",MOUSELEAVE:"mouseleave.bs.tooltip"},Re=function(t){function o(e,n){var i;if(void 0===de)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");return(i=t.call(this,e)||this)._isEnabled=!0,i._timeout=0,i._hoverState="",i._activeTrigger={},i._popper=null,i.config=i._getConfig(n),i.tip=null,i._setListeners(),i}i(o,t);var r=o.prototype;return r.enable=function(){this._isEnabled=!0},r.disable=function(){this._isEnabled=!1},r.toggleEnabled=function(){this._isEnabled=!this._isEnabled},r.toggle=function(t){if(this._isEnabled)if(t){var e=this.constructor.DATA_KEY,n=T(t.delegateTarget,e);n||(n=new this.constructor(t.delegateTarget,this._getDelegateConfig()),E(t.delegateTarget,e,n)),n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)}else{if(this.getTipElement().classList.contains("show"))return void this._leave(null,this);this._enter(null,this)}},r.dispose=function(){clearTimeout(this._timeout),H.off(this._element,this.constructor.EVENT_KEY),H.off(this._element.closest(".modal"),"hide.bs.modal",this._hideModalHandler),this.tip&&this.tip.parentNode.removeChild(this.tip),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,this._popper&&this._popper.destroy(),this._popper=null,this.config=null,this.tip=null,t.prototype.dispose.call(this)},r.show=function(){var t=this;if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(this.isWithContent()&&this._isEnabled){var e=H.trigger(this._element,this.constructor.Event.SHOW),n=function t(e){if(!document.documentElement.attachShadow)return null;if("function"==typeof e.getRootNode){var n=e.getRootNode();return n instanceof ShadowRoot?n:null}return e instanceof ShadowRoot?e:e.parentNode?t(e.parentNode):null}(this._element),i=null===n?this._element.ownerDocument.documentElement.contains(this._element):n.contains(this._element);if(e.defaultPrevented||!i)return;var o=this.getTipElement(),r=s(this.constructor.NAME);o.setAttribute("id",r),this._element.setAttribute("aria-describedby",r),this.setContent(),this.config.animation&&o.classList.add("fade");var a="function"==typeof this.config.placement?this.config.placement.call(this,o,this._element):this.config.placement,l=this._getAttachment(a);this._addAttachmentClass(l);var c=this._getContainer();E(o,this.constructor.DATA_KEY,this),this._element.ownerDocument.documentElement.contains(this.tip)||c.appendChild(o),H.trigger(this._element,this.constructor.Event.INSERTED),this._popper=fe(this._element,o,this._getPopperConfig(l)),o.classList.add("show");var f,d,p="function"==typeof this.config.customClass?this.config.customClass():this.config.customClass;if(p)(f=o.classList).add.apply(f,p.split(" "));if("ontouchstart"in document.documentElement)(d=[]).concat.apply(d,document.body.children).forEach((function(t){H.on(t,"mouseover",(function(){}))}));var g=function(){var e=t._hoverState;t._hoverState=null,H.trigger(t._element,t.constructor.Event.SHOWN),"out"===e&&t._leave(null,t)};if(this.tip.classList.contains("fade")){var m=u(this.tip);H.one(this.tip,"transitionend",g),h(this.tip,m)}else g()}},r.hide=function(){var t=this;if(this._popper){var e=this.getTipElement(),n=function(){"show"!==t._hoverState&&e.parentNode&&e.parentNode.removeChild(e),t._cleanTipClass(),t._element.removeAttribute("aria-describedby"),H.trigger(t._element,t.constructor.Event.HIDDEN),t._popper&&(t._popper.destroy(),t._popper=null)};if(!H.trigger(this._element,this.constructor.Event.HIDE).defaultPrevented){var i;if(e.classList.remove("show"),"ontouchstart"in document.documentElement)(i=[]).concat.apply(i,document.body.children).forEach((function(t){return H.off(t,"mouseover",m)}));if(this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1,this.tip.classList.contains("fade")){var o=u(e);H.one(e,"transitionend",n),h(e,o)}else n();this._hoverState=""}}},r.update=function(){null!==this._popper&&this._popper.update()},r.isWithContent=function(){return Boolean(this.getTitle())},r.getTipElement=function(){if(this.tip)return this.tip;var t=document.createElement("div");return t.innerHTML=this.config.template,this.tip=t.children[0],this.tip},r.setContent=function(){var t=this.getTipElement();this.setElementContent(q.findOne(".tooltip-inner",t),this.getTitle()),t.classList.remove("fade","show")},r.setElementContent=function(t,e){if(null!==t)return"object"==typeof e&&d(e)?(e.jquery&&(e=e[0]),void(this.config.html?e.parentNode!==t&&(t.innerHTML="",t.appendChild(e)):t.textContent=e.textContent)):void(this.config.html?(this.config.sanitize&&(e=Se(e,this.config.allowList,this.config.sanitizeFn)),t.innerHTML=e):t.textContent=e)},r.getTitle=function(){var t=this._element.getAttribute("data-bs-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this._element):this.config.title),t},r.updateAttachment=function(t){return"right"===t?"end":"left"===t?"start":t},r._getPopperConfig=function(t){var e=this,i={name:"flip",options:{altBoundary:!0}};return this.config.fallbackPlacements&&(i.options.fallbackPlacements=this.config.fallbackPlacements),n({},{placement:t,modifiers:[i,{name:"preventOverflow",options:{rootBoundary:this.config.boundary}},{name:"arrow",options:{element:"."+this.constructor.NAME+"-arrow"}},{name:"onChange",enabled:!0,phase:"afterWrite",fn:function(t){return e._handlePopperPlacementChange(t)}}],onFirstUpdate:function(t){t.options.placement!==t.placement&&e._handlePopperPlacementChange(t)}},this.config.popperConfig)},r._addAttachmentClass=function(t){this.getTipElement().classList.add("bs-tooltip-"+this.updateAttachment(t))},r._getContainer=function(){return!1===this.config.container?document.body:d(this.config.container)?this.config.container:q.findOne(this.config.container)},r._getAttachment=function(t){return Me[t.toUpperCase()]},r._setListeners=function(){var t=this;this.config.trigger.split(" ").forEach((function(e){if("click"===e)H.on(t._element,t.constructor.Event.CLICK,t.config.selector,(function(e){return t.toggle(e)}));else if("manual"!==e){var n="hover"===e?t.constructor.Event.MOUSEENTER:t.constructor.Event.FOCUSIN,i="hover"===e?t.constructor.Event.MOUSELEAVE:t.constructor.Event.FOCUSOUT;H.on(t._element,n,t.config.selector,(function(e){return t._enter(e)})),H.on(t._element,i,t.config.selector,(function(e){return t._leave(e)}))}})),this._hideModalHandler=function(){t._element&&t.hide()},H.on(this._element.closest(".modal"),"hide.bs.modal",this._hideModalHandler),this.config.selector?this.config=n({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},r._fixTitle=function(){var t=this._element.getAttribute("title"),e=typeof this._element.getAttribute("data-bs-original-title");(t||"string"!==e)&&(this._element.setAttribute("data-bs-original-title",t||""),!t||this._element.getAttribute("aria-label")||this._element.textContent||this._element.setAttribute("aria-label",t),this._element.setAttribute("title",""))},r._enter=function(t,e){var n=this.constructor.DATA_KEY;(e=e||T(t.delegateTarget,n))||(e=new this.constructor(t.delegateTarget,this._getDelegateConfig()),E(t.delegateTarget,n,e)),t&&(e._activeTrigger["focusin"===t.type?"focus":"hover"]=!0),e.getTipElement().classList.contains("show")||"show"===e._hoverState?e._hoverState="show":(clearTimeout(e._timeout),e._hoverState="show",e.config.delay&&e.config.delay.show?e._timeout=setTimeout((function(){"show"===e._hoverState&&e.show()}),e.config.delay.show):e.show())},r._leave=function(t,e){var n=this.constructor.DATA_KEY;(e=e||T(t.delegateTarget,n))||(e=new this.constructor(t.delegateTarget,this._getDelegateConfig()),E(t.delegateTarget,n,e)),t&&(e._activeTrigger["focusout"===t.type?"focus":"hover"]=!1),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState="out",e.config.delay&&e.config.delay.hide?e._timeout=setTimeout((function(){"out"===e._hoverState&&e.hide()}),e.config.delay.hide):e.hide())},r._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},r._getConfig=function(t){var e=Y.getDataAttributes(this._element);return Object.keys(e).forEach((function(t){Ie.has(t)&&delete e[t]})),t&&"object"==typeof t.container&&t.container.jquery&&(t.container=t.container[0]),"number"==typeof(t=n({},this.constructor.Default,e,"object"==typeof t&&t?t:{})).delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),p(je,t,this.constructor.DefaultType),t.sanitize&&(t.template=Se(t.template,t.allowList,t.sanitizeFn)),t},r._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},r._cleanTipClass=function(){var t=this.getTipElement(),e=t.getAttribute("class").match(Ne);null!==e&&e.length>0&&e.map((function(t){return t.trim()})).forEach((function(e){return t.classList.remove(e)}))},r._handlePopperPlacementChange=function(t){var e=t.state;e&&(this.tip=e.elements.popper,this._cleanTipClass(),this._addAttachmentClass(this._getAttachment(e.placement)))},o.jQueryInterface=function(t){return this.each((function(){var e=T(this,"bs.tooltip"),n="object"==typeof t&&t;if((e||!/dispose|hide/.test(t))&&(e||(e=new o(this,n)),"string"==typeof t)){if(void 0===e[t])throw new TypeError('No method named "'+t+'"');e[t]()}}))},e(o,null,[{key:"Default",get:function(){return Be}},{key:"NAME",get:function(){return je}},{key:"DATA_KEY",get:function(){return"bs.tooltip"}},{key:"Event",get:function(){return He}},{key:"EVENT_KEY",get:function(){return".bs.tooltip"}},{key:"DefaultType",get:function(){return Pe}}]),o}(R);b((function(){var t=_();if(t){var e=t.fn[je];t.fn[je]=Re.jQueryInterface,t.fn[je].Constructor=Re,t.fn[je].noConflict=function(){return t.fn[je]=e,Re.jQueryInterface}}}));var We="popover",Ke=new RegExp("(^|\\s)bs-popover\\S+","g"),Qe=n({},Re.Default,{placement:"right",trigger:"click",content:"",template:''}),Ue=n({},Re.DefaultType,{content:"(string|element|function)"}),Fe={HIDE:"hide.bs.popover",HIDDEN:"hidden.bs.popover",SHOW:"show.bs.popover",SHOWN:"shown.bs.popover",INSERTED:"inserted.bs.popover",CLICK:"click.bs.popover",FOCUSIN:"focusin.bs.popover",FOCUSOUT:"focusout.bs.popover",MOUSEENTER:"mouseenter.bs.popover",MOUSELEAVE:"mouseleave.bs.popover"},Ye=function(t){function n(){return t.apply(this,arguments)||this}i(n,t);var o=n.prototype;return o.isWithContent=function(){return this.getTitle()||this._getContent()},o.setContent=function(){var t=this.getTipElement();this.setElementContent(q.findOne(".popover-header",t),this.getTitle());var e=this._getContent();"function"==typeof e&&(e=e.call(this._element)),this.setElementContent(q.findOne(".popover-body",t),e),t.classList.remove("fade","show")},o._addAttachmentClass=function(t){this.getTipElement().classList.add("bs-popover-"+this.updateAttachment(t))},o._getContent=function(){return this._element.getAttribute("data-bs-content")||this.config.content},o._cleanTipClass=function(){var t=this.getTipElement(),e=t.getAttribute("class").match(Ke);null!==e&&e.length>0&&e.map((function(t){return t.trim()})).forEach((function(e){return t.classList.remove(e)}))},n.jQueryInterface=function(t){return this.each((function(){var e=T(this,"bs.popover"),i="object"==typeof t?t:null;if((e||!/dispose|hide/.test(t))&&(e||(e=new n(this,i),E(this,"bs.popover",e)),"string"==typeof t)){if(void 0===e[t])throw new TypeError('No method named "'+t+'"');e[t]()}}))},e(n,null,[{key:"Default",get:function(){return Qe}},{key:"NAME",get:function(){return We}},{key:"DATA_KEY",get:function(){return"bs.popover"}},{key:"Event",get:function(){return Fe}},{key:"EVENT_KEY",get:function(){return".bs.popover"}},{key:"DefaultType",get:function(){return Ue}}]),n}(Re);b((function(){var t=_();if(t){var e=t.fn[We];t.fn[We]=Ye.jQueryInterface,t.fn[We].Constructor=Ye,t.fn[We].noConflict=function(){return t.fn[We]=e,Ye.jQueryInterface}}}));var qe="scrollspy",ze={offset:10,method:"auto",target:""},Ve={offset:"number",method:"string",target:"(string|element)"},Xe=function(t){function o(e,n){var i;return(i=t.call(this,e)||this)._scrollElement="BODY"===e.tagName?window:e,i._config=i._getConfig(n),i._selector=i._config.target+" .nav-link, "+i._config.target+" .list-group-item, "+i._config.target+" .dropdown-item",i._offsets=[],i._targets=[],i._activeTarget=null,i._scrollHeight=0,H.on(i._scrollElement,"scroll.bs.scrollspy",(function(t){return i._process(t)})),i.refresh(),i._process(),i}i(o,t);var r=o.prototype;return r.refresh=function(){var t=this,e=this._scrollElement===this._scrollElement.window?"offset":"position",n="auto"===this._config.method?e:this._config.method,i="position"===n?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),q.find(this._selector).map((function(t){var e=l(t),o=e?q.findOne(e):null;if(o){var r=o.getBoundingClientRect();if(r.width||r.height)return[Y[n](o).top+i,e]}return null})).filter((function(t){return t})).sort((function(t,e){return t[0]-e[0]})).forEach((function(e){t._offsets.push(e[0]),t._targets.push(e[1])}))},r.dispose=function(){t.prototype.dispose.call(this),H.off(this._scrollElement,".bs.scrollspy"),this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},r._getConfig=function(t){if("string"!=typeof(t=n({},ze,"object"==typeof t&&t?t:{})).target&&d(t.target)){var e=t.target.id;e||(e=s(qe),t.target.id=e),t.target="#"+e}return p(qe,t,Ve),t},r._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},r._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},r._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},r._process=function(){var t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),n=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),t>=n){var i=this._targets[this._targets.length-1];this._activeTarget!==i&&this._activate(i)}else{if(this._activeTarget&&t0)return this._activeTarget=null,void this._clear();for(var o=this._offsets.length;o--;){this._activeTarget!==this._targets[o]&&t>=this._offsets[o]&&(void 0===this._offsets[o+1]||t li > .active":".active";e=(e=q.find(o,i))[e.length-1]}var r=null;if(e&&(r=H.trigger(e,"hide.bs.tab",{relatedTarget:this._element})),!(H.trigger(this._element,"show.bs.tab",{relatedTarget:e}).defaultPrevented||null!==r&&r.defaultPrevented)){this._activate(this._element,i);var s=function(){H.trigger(e,"hidden.bs.tab",{relatedTarget:t._element}),H.trigger(t._element,"shown.bs.tab",{relatedTarget:e})};n?this._activate(n,n.parentNode,s):s()}}},o._activate=function(t,e,n){var i=this,o=(!e||"UL"!==e.nodeName&&"OL"!==e.nodeName?q.children(e,".active"):q.find(":scope > li > .active",e))[0],r=n&&o&&o.classList.contains("fade"),s=function(){return i._transitionComplete(t,o,n)};if(o&&r){var a=u(o);o.classList.remove("show"),H.one(o,"transitionend",s),h(o,a)}else s()},o._transitionComplete=function(t,e,n){if(e){e.classList.remove("active");var i=q.findOne(":scope > .dropdown-menu .active",e.parentNode);i&&i.classList.remove("active"),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!1)}(t.classList.add("active"),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!0),v(t),t.classList.contains("fade")&&t.classList.add("show"),t.parentNode&&t.parentNode.classList.contains("dropdown-menu"))&&(t.closest(".dropdown")&&q.find(".dropdown-toggle").forEach((function(t){return t.classList.add("active")})),t.setAttribute("aria-expanded",!0));n&&n()},n.jQueryInterface=function(t){return this.each((function(){var e=T(this,"bs.tab")||new n(this);if("string"==typeof t){if(void 0===e[t])throw new TypeError('No method named "'+t+'"');e[t]()}}))},e(n,null,[{key:"DATA_KEY",get:function(){return"bs.tab"}}]),n}(R);H.on(document,"click.bs.tab.data-api",'[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',(function(t){t.preventDefault(),(T(this,"bs.tab")||new $e(this)).show()})),b((function(){var t=_();if(t){var e=t.fn.tab;t.fn.tab=$e.jQueryInterface,t.fn.tab.Constructor=$e,t.fn.tab.noConflict=function(){return t.fn.tab=e,$e.jQueryInterface}}}));var Ge={animation:"boolean",autohide:"boolean",delay:"number"},Ze={animation:!0,autohide:!0,delay:5e3},Je=function(t){function o(e,n){var i;return(i=t.call(this,e)||this)._config=i._getConfig(n),i._timeout=null,i._setListeners(),i}i(o,t);var r=o.prototype;return r.show=function(){var t=this;if(!H.trigger(this._element,"show.bs.toast").defaultPrevented){this._clearTimeout(),this._config.animation&&this._element.classList.add("fade");var e=function(){t._element.classList.remove("showing"),t._element.classList.add("show"),H.trigger(t._element,"shown.bs.toast"),t._config.autohide&&(t._timeout=setTimeout((function(){t.hide()}),t._config.delay))};if(this._element.classList.remove("hide"),v(this._element),this._element.classList.add("showing"),this._config.animation){var n=u(this._element);H.one(this._element,"transitionend",e),h(this._element,n)}else e()}},r.hide=function(){var t=this;if(this._element.classList.contains("show")&&!H.trigger(this._element,"hide.bs.toast").defaultPrevented){var e=function(){t._element.classList.add("hide"),H.trigger(t._element,"hidden.bs.toast")};if(this._element.classList.remove("show"),this._config.animation){var n=u(this._element);H.one(this._element,"transitionend",e),h(this._element,n)}else e()}},r.dispose=function(){this._clearTimeout(),this._element.classList.contains("show")&&this._element.classList.remove("show"),H.off(this._element,"click.dismiss.bs.toast"),t.prototype.dispose.call(this),this._config=null},r._getConfig=function(t){return t=n({},Ze,Y.getDataAttributes(this._element),"object"==typeof t&&t?t:{}),p("toast",t,this.constructor.DefaultType),t},r._setListeners=function(){var t=this;H.on(this._element,"click.dismiss.bs.toast",'[data-bs-dismiss="toast"]',(function(){return t.hide()}))},r._clearTimeout=function(){clearTimeout(this._timeout),this._timeout=null},o.jQueryInterface=function(t){return this.each((function(){var e=T(this,"bs.toast");if(e||(e=new o(this,"object"==typeof t&&t)),"string"==typeof t){if(void 0===e[t])throw new TypeError('No method named "'+t+'"');e[t](this)}}))},e(o,null,[{key:"DefaultType",get:function(){return Ge}},{key:"Default",get:function(){return Ze}},{key:"DATA_KEY",get:function(){return"bs.toast"}}]),o}(R);return b((function(){var t=_();if(t){var e=t.fn.toast;t.fn.toast=Je.jQueryInterface,t.fn.toast.Constructor=Je,t.fn.toast.noConflict=function(){return t.fn.toast=e,Je.jQueryInterface}}})),{Alert:K,Button:Q,Carousel:Z,Collapse:nt,Dropdown:Te,Modal:Le,Popover:Ye,ScrollSpy:Xe,Tab:$e,Toast:Je,Tooltip:Re}})); -//# sourceMappingURL=bootstrap.bundle.min.js.map \ No newline at end of file diff --git a/dist/js/bootstrap.bundle.min.js.map b/dist/js/bootstrap.bundle.min.js.map deleted file mode 100644 index 89d43b8c4..000000000 --- a/dist/js/bootstrap.bundle.min.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../../js/src/util/index.js","../../js/src/dom/data.js","../../js/src/dom/event-handler.js","../../js/src/base-component.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/dom/manipulator.js","../../js/src/dom/selector-engine.js","../../js/src/carousel.js","../../js/src/collapse.js","../../node_modules/@popperjs/core/lib/enums.js","../../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../../node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../../node_modules/@popperjs/core/lib/dom-utils/contains.js","../../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../../node_modules/@popperjs/core/lib/utils/within.js","../../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../../node_modules/@popperjs/core/lib/modifiers/arrow.js","../../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../../node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../../node_modules/@popperjs/core/lib/utils/getVariation.js","../../node_modules/@popperjs/core/lib/utils/computeOffsets.js","../../node_modules/@popperjs/core/lib/utils/detectOverflow.js","../../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../../node_modules/@popperjs/core/lib/modifiers/flip.js","../../node_modules/@popperjs/core/lib/modifiers/hide.js","../../node_modules/@popperjs/core/lib/modifiers/offset.js","../../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../../node_modules/@popperjs/core/lib/utils/getAltAxis.js","../../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../../node_modules/@popperjs/core/lib/utils/orderModifiers.js","../../node_modules/@popperjs/core/lib/createPopper.js","../../node_modules/@popperjs/core/lib/utils/debounce.js","../../node_modules/@popperjs/core/lib/utils/mergeByName.js","../../node_modules/@popperjs/core/lib/popper-lite.js","../../node_modules/@popperjs/core/lib/popper.js","../../js/src/dropdown.js","../../js/src/modal.js","../../js/src/util/sanitizer.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/toast.js","../../js/index.umd.js"],"names":["storeData","id","getUID","prefix","Math","floor","random","document","getElementById","getSelector","element","selector","getAttribute","hrefAttr","trim","getSelectorFromElement","querySelector","getElementFromSelector","getTransitionDurationFromElement","_window$getComputedSt","window","getComputedStyle","transitionDuration","transitionDelay","floatTransitionDuration","Number","parseFloat","floatTransitionDelay","split","triggerTransitionEnd","dispatchEvent","Event","isElement","obj","nodeType","emulateTransitionEnd","duration","called","emulatedDuration","addEventListener","listener","removeEventListener","setTimeout","typeCheckConfig","componentName","config","configTypes","Object","keys","forEach","property","expectedTypes","value","valueType","toString","call","match","toLowerCase","RegExp","test","Error","toUpperCase","isVisible","style","parentNode","elementStyle","parentNodeStyle","display","visibility","noop","reflow","offsetHeight","getjQuery","jQuery","body","hasAttribute","onDOMContentLoaded","callback","readyState","isRTL","documentElement","dir","mapData","set","key","data","bsKey","get","keyProperties","delete","Data","instance","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","nativeEvents","Set","getUidEvent","uid","getEvent","findHandler","events","handler","delegationSelector","uidEventList","i","len","length","event","originalHandler","normalizeParams","originalTypeEvent","delegationFn","delegation","typeEvent","replace","custom","has","addHandler","oneOff","_normalizeParams","handlers","previousFn","fn","domElements","querySelectorAll","target","this","delegateTarget","EventHandler","off","type","apply","bootstrapDelegationHandler","bootstrapHandler","removeHandler","Boolean","on","one","_normalizeParams2","inNamespace","isNamespace","startsWith","elementEvent","namespace","storeElementEvent","handlerKey","includes","removeNamespacedHandlers","slice","keyHandlers","trigger","args","jQueryEvent","$","isNative","bubbles","nativeDispatch","defaultPrevented","evt","isPropagationStopped","isImmediatePropagationStopped","isDefaultPrevented","createEvent","initEvent","CustomEvent","cancelable","defineProperty","preventDefault","BaseComponent","_element","constructor","DATA_KEY","dispose","getInstance","NAME","Alert","close","rootElement","_getRootElement","customEvent","_triggerCloseEvent","_removeElement","closest","_this","classList","remove","contains","_destroyElement","removeChild","jQueryInterface","each","handleDismiss","alertInstance","JQUERY_NO_CONFLICT","Constructor","noConflict","Button","toggle","setAttribute","normalizeData","val","normalizeDataKey","chr","button","Manipulator","setDataAttribute","removeDataAttribute","removeAttribute","getDataAttributes","attributes","dataset","filter","pureKey","charAt","getDataAttribute","offset","rect","getBoundingClientRect","top","scrollTop","left","scrollLeft","position","offsetTop","offsetLeft","SelectorEngine","matches","find","_ref","concat","Element","prototype","findOne","children","_ref2","child","parents","ancestor","Node","ELEMENT_NODE","push","prev","previous","previousElementSibling","next","nextElementSibling","EVENT_KEY","Default","interval","keyboard","slide","pause","wrap","touch","DefaultType","PointerType","TOUCH","PEN","Carousel","_BaseComponent","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","touchStartX","touchDeltaX","_config","_getConfig","_indicatorsElement","_touchSupported","navigator","maxTouchPoints","_pointerEvent","PointerEvent","_addEventListeners","_slide","nextWhenVisible","hidden","cycle","clearInterval","_updateInterval","setInterval","visibilityState","bind","to","index","_this2","activeIndex","_getItemIndex","direction","_extends","_handleSwipe","absDeltax","abs","_this3","_keydown","_addTouchEventListeners","_this4","start","pointerType","clientX","touches","end","clearTimeout","itemImg","e","add","move","tagName","indexOf","_getItemByDirection","activeElement","isNextDirection","isPrevDirection","lastItemIndex","itemIndex","_triggerSlideEvent","relatedTarget","eventDirectionName","targetIndex","fromIndex","from","_setActiveIndicatorElement","indicators","nextIndicator","elementInterval","parseInt","defaultInterval","directionalClassName","orderClassName","_this5","activeElementIndex","nextElement","nextElementIndex","isCycling","carouselInterface","action","TypeError","ride","dataApiClickHandler","slideIndex","carousels","parent","Collapse","_isTransitioning","_triggerArray","SELECTOR_DATA_TOGGLE","toggleList","elem","filterElement","foundElem","_selector","_parent","_getParent","_addAriaAndCollapsedClass","hide","show","actives","activesData","container","tempActiveData","elemActive","collapseInterface","dimension","_getDimension","setTransitioning","scrollSize","triggerArrayLength","isTransitioning","jquery","selected","triggerArray","isOpen","triggerData","bottom","right","basePlacements","variationPlacements","reduce","acc","placement","placements","modifierPhases","getNodeName","nodeName","getWindow","node","ownerDocument","defaultView","isHTMLElement","HTMLElement","applyStyles$1","name","enabled","phase","state","elements","styles","assign","effect","initialStyles","popper","options","strategy","margin","arrow","reference","hasOwnProperty","attribute","requires","getBasePlacement","getLayoutRect","x","y","width","offsetWidth","height","rootNode","getRootNode","ShadowRoot","isSameNode","host","isTableElement","getDocumentElement","getParentNode","assignedSlot","getTrueOffsetParent","offsetParent","html","getOffsetParent","currentNode","css","transform","perspective","willChange","getContainingBlock","getMainAxisFromPlacement","within","min","max","mergePaddingObject","paddingObject","expandToHashMap","hashMap","arrow$1","_state$modifiersData$","arrowElement","popperOffsets","modifiersData","basePlacement","axis","padding","arrowRect","minProp","maxProp","endDiff","rects","startDiff","arrowOffsetParent","clientSize","clientHeight","clientWidth","centerToReference","center","axisProp","centerOffset","_options$element","_options$padding","requiresIfExists","unsetSides","mapToStyles","_Object$assign2","popperRect","offsets","gpuAcceleration","adaptive","_roundOffsets","dpr","devicePixelRatio","round","roundOffsets","hasX","hasY","sideX","sideY","win","_Object$assign","commonStyles","computeStyles$1","_ref3","_options$gpuAccelerat","_options$adaptive","data-popper-placement","passive","eventListeners","_options$scroll","scroll","_options$resize","resize","scrollParents","scrollParent","update","hash","getOppositePlacement","matched","getOppositeVariationPlacement","getWindowScroll","pageXOffset","pageYOffset","getWindowScrollBarX","isScrollParent","_getComputedStyle","overflow","overflowX","overflowY","listScrollParents","list","getScrollParent","isBody","visualViewport","updatedList","rectToClientRect","getClientRectFromMixedType","clippingParent","userAgent","getViewportRect","clientTop","clientLeft","getInnerBoundingClientRect","winScroll","scrollWidth","scrollHeight","getDocumentRect","getClippingRect","boundary","rootBoundary","mainClippingParents","clippingParents","clipperElement","getClippingParents","firstClippingParent","clippingRect","accRect","getVariation","computeOffsets","variation","commonX","commonY","mainAxis","ceil","detectOverflow","_options","_options$placement","_options$boundary","_options$rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","altContext","referenceElement","clippingClientRect","contextElement","referenceClientRect","popperClientRect","elementClientRect","overflowOffsets","offsetData","multiply","computeAutoPlacement","flipVariations","_options$allowedAutoP","allowedAutoPlacements","allPlacements","allowedPlacements","overflows","sort","a","b","flip$1","_skip","_options$mainAxis","checkMainAxis","_options$altAxis","altAxis","checkAltAxis","specifiedFallbackPlacements","fallbackPlacements","_options$flipVariatio","preferredPlacement","oppositePlacement","getExpandedFallbackPlacements","referenceRect","checksMap","Map","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","isVertical","mainVariationSide","altVariationSide","checks","every","check","_loop","_i","fittingPlacement","reset","getSideOffsets","preventedOffsets","isAnySideFullyClipped","some","side","hide$1","preventOverflow","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","data-popper-reference-hidden","data-popper-escaped","offset$1","_options$offset","invertDistance","skidding","distance","distanceAndSkiddingToXY","_data$state$placement","popperOffsets$1","preventOverflow$1","_options$tether","tether","_options$tetherOffset","tetherOffset","isBasePlacement","tetherOffsetValue","mainSide","altSide","additive","minLen","maxLen","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","clientOffset","offsetModifierValue","tetherMin","tetherMax","preventedOffset","_mainSide","_altSide","_offset","_preventedOffset","getCompositeRect","elementOrVirtualElement","isFixed","isOffsetParentAnElement","order","modifiers","map","visited","result","modifier","dep","depModifier","DEFAULT_OPTIONS","areValidElements","_len","arguments","Array","_key","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","defaultOptions","pending","orderedModifiers","effectCleanupFns","isDestroyed","setOptions","cleanupModifierEffects","merged","orderModifiers","current","existing","m","_ref3$options","cleanupFn","noopFn","forceUpdate","_state$elements","_state$orderedModifie","_state$orderedModifie2","Promise","resolve","then","undefined","destroy","onFirstUpdate","createPopper","computeStyles","applyStyles","flip","REGEXP_KEYDOWN","ARROW_UP_KEY","PLACEMENT_TOP","PLACEMENT_TOPEND","PLACEMENT_BOTTOM","PLACEMENT_BOTTOMEND","PLACEMENT_RIGHT","PLACEMENT_LEFT","popperConfig","Dropdown","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","disabled","isActive","clearMenus","getParentFromElement","Popper","_getPopperConfig","focus","stopPropagation","_getPlacement","parentDropdown","isEnd","getPropertyValue","dropdownInterface","toggles","context","clickEvent","dropdownMenu","dataApiKeydownHandler","items","backdrop","Modal","_dialog","_backdrop","_isShown","_isBodyOverflowing","_ignoreBackdropClick","_scrollbarWidth","showEvent","_checkScrollbar","_setScrollbar","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","transition","_hideModal","htmlElement","handleUpdate","modalBody","appendChild","_enforceFocus","transitionComplete","_this6","_triggerBackdropTransition","_this7","_this8","_resetAdjustments","_resetScrollbar","_removeBackdrop","_this9","animate","createElement","className","currentTarget","backdropTransitionDuration","callbackRemove","_this10","isModalOverflowing","modalTransitionDuration","paddingLeft","paddingRight","innerWidth","_getScrollbarWidth","_this11","actualPadding","calculatedPadding","actualMargin","marginRight","calculatedMargin","scrollDiv","scrollbarWidth","_this12","uriAttrs","SAFE_URL_PATTERN","DATA_URL_PATTERN","DefaultAllowlist","*","area","br","col","code","div","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","p","pre","s","small","span","sub","sup","strong","u","ul","sanitizeHtml","unsafeHtml","allowList","sanitizeFn","createdDocument","DOMParser","parseFromString","allowlistKeys","el","elName","attributeList","allowedAttributes","attr","allowedAttributeList","attrName","nodeValue","regExp","attrRegex","allowedAttribute","innerHTML","BSCLS_PREFIX_REGEX","DISALLOWED_ATTRIBUTES","animation","template","title","delay","customClass","sanitize","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","HIDE","HIDDEN","SHOW","SHOWN","INSERTED","CLICK","FOCUSIN","FOCUSOUT","MOUSEENTER","MOUSELEAVE","Tooltip","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","enable","disable","toggleEnabled","dataKey","_getDelegateConfig","click","_isWithActiveTrigger","_enter","_leave","getTipElement","_hideModalHandler","isWithContent","shadowRoot","findShadowRoot","attachShadow","root","isInTheDom","tipId","setContent","attachment","_getAttachment","_addAttachmentClass","_getContainer","_tip$classList","complete","prevHoverState","_cleanTipClass","getTitle","setElementContent","content","textContent","updateAttachment","flipModifier","_handlePopperPlacementChange","CLASS_PREFIX","eventIn","eventOut","_fixTitle","originalTitleType","dataAttributes","dataAttr","tabClass","token","tClass","popperData","Popover","_getContent","method","ScrollSpy","_scrollElement","_offsets","_targets","_activeTarget","_scrollHeight","_process","refresh","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","targetSelector","targetBCR","item","_getOffsetHeight","innerHeight","maxScroll","_activate","_clear","queries","link","join","listGroup","SELECTOR_NAV_LINKS","navItem","spy","Tab","listElement","itemSelector","hideEvent","active","_transitionComplete","dropdownChild","dropdown","autohide","Toast","_clearTimeout"],"mappings":"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","sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1000000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n// Shoutout AngusCroll (https://goo.gl/pxwQGp)\nconst toType = obj => {\n if (obj === null || obj === undefined) {\n return `${obj}`\n }\n\n return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\n/**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\nconst getUID = prefix => {\n do {\n prefix += Math.floor(Math.random() * MAX_UID)\n } while (document.getElementById(prefix))\n\n return prefix\n}\n\nconst getSelector = element => {\n let selector = element.getAttribute('data-bs-target')\n\n if (!selector || selector === '#') {\n const hrefAttr = element.getAttribute('href')\n\n selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null\n }\n\n return selector\n}\n\nconst getSelectorFromElement = element => {\n const selector = getSelector(element)\n\n if (selector) {\n return document.querySelector(selector) ? selector : null\n }\n\n return null\n}\n\nconst getElementFromSelector = element => {\n const selector = getSelector(element)\n\n return selector ? document.querySelector(selector) : null\n}\n\nconst getTransitionDurationFromElement = element => {\n if (!element) {\n return 0\n }\n\n // Get transition-duration of the element\n let { transitionDuration, transitionDelay } = window.getComputedStyle(element)\n\n const floatTransitionDuration = Number.parseFloat(transitionDuration)\n const floatTransitionDelay = Number.parseFloat(transitionDelay)\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0]\n transitionDelay = transitionDelay.split(',')[0]\n\n return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = element => {\n element.dispatchEvent(new Event(TRANSITION_END))\n}\n\nconst isElement = obj => (obj[0] || obj).nodeType\n\nconst emulateTransitionEnd = (element, duration) => {\n let called = false\n const durationPadding = 5\n const emulatedDuration = duration + durationPadding\n\n function listener() {\n called = true\n element.removeEventListener(TRANSITION_END, listener)\n }\n\n element.addEventListener(TRANSITION_END, listener)\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(element)\n }\n }, emulatedDuration)\n}\n\nconst typeCheckConfig = (componentName, config, configTypes) => {\n Object.keys(configTypes).forEach(property => {\n const expectedTypes = configTypes[property]\n const value = config[property]\n const valueType = value && isElement(value) ?\n 'element' :\n toType(value)\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new Error(\n `${componentName.toUpperCase()}: ` +\n `Option \"${property}\" provided type \"${valueType}\" ` +\n `but expected type \"${expectedTypes}\".`)\n }\n })\n}\n\nconst isVisible = element => {\n if (!element) {\n return false\n }\n\n if (element.style && element.parentNode && element.parentNode.style) {\n const elementStyle = getComputedStyle(element)\n const parentNodeStyle = getComputedStyle(element.parentNode)\n\n return elementStyle.display !== 'none' &&\n parentNodeStyle.display !== 'none' &&\n elementStyle.visibility !== 'hidden'\n }\n\n return false\n}\n\nconst findShadowRoot = element => {\n if (!document.documentElement.attachShadow) {\n return null\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode()\n return root instanceof ShadowRoot ? root : null\n }\n\n if (element instanceof ShadowRoot) {\n return element\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null\n }\n\n return findShadowRoot(element.parentNode)\n}\n\nconst noop = () => function () {}\n\nconst reflow = element => element.offsetHeight\n\nconst getjQuery = () => {\n const { jQuery } = window\n\n if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n return jQuery\n }\n\n return null\n}\n\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', callback)\n } else {\n callback()\n }\n}\n\nconst isRTL = document.documentElement.dir === 'rtl'\n\nexport {\n TRANSITION_END,\n getUID,\n getSelectorFromElement,\n getElementFromSelector,\n getTransitionDurationFromElement,\n triggerTransitionEnd,\n isElement,\n emulateTransitionEnd,\n typeCheckConfig,\n isVisible,\n findShadowRoot,\n noop,\n reflow,\n getjQuery,\n onDOMContentLoaded,\n isRTL\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst mapData = (() => {\n const storeData = {}\n let id = 1\n return {\n set(element, key, data) {\n if (typeof element.bsKey === 'undefined') {\n element.bsKey = {\n key,\n id\n }\n id++\n }\n\n storeData[element.bsKey.id] = data\n },\n get(element, key) {\n if (!element || typeof element.bsKey === 'undefined') {\n return null\n }\n\n const keyProperties = element.bsKey\n if (keyProperties.key === key) {\n return storeData[keyProperties.id]\n }\n\n return null\n },\n delete(element, key) {\n if (typeof element.bsKey === 'undefined') {\n return\n }\n\n const keyProperties = element.bsKey\n if (keyProperties.key === key) {\n delete storeData[keyProperties.id]\n delete element.bsKey\n }\n }\n }\n})()\n\nconst Data = {\n setData(instance, key, data) {\n mapData.set(instance, key, data)\n },\n getData(instance, key) {\n return mapData.get(instance, key)\n },\n removeData(instance, key) {\n mapData.delete(instance, key)\n }\n}\n\nexport default Data\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery } from '../util/index'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/\nconst stripNameRegex = /\\..*/\nconst stripUidRegex = /::\\d+$/\nconst eventRegistry = {} // Events storage\nlet uidEvent = 1\nconst customEvents = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout'\n}\nconst nativeEvents = new Set([\n 'click',\n 'dblclick',\n 'mouseup',\n 'mousedown',\n 'contextmenu',\n 'mousewheel',\n 'DOMMouseScroll',\n 'mouseover',\n 'mouseout',\n 'mousemove',\n 'selectstart',\n 'selectend',\n 'keydown',\n 'keypress',\n 'keyup',\n 'orientationchange',\n 'touchstart',\n 'touchmove',\n 'touchend',\n 'touchcancel',\n 'pointerdown',\n 'pointermove',\n 'pointerup',\n 'pointerleave',\n 'pointercancel',\n 'gesturestart',\n 'gesturechange',\n 'gestureend',\n 'focus',\n 'blur',\n 'change',\n 'reset',\n 'select',\n 'submit',\n 'focusin',\n 'focusout',\n 'load',\n 'unload',\n 'beforeunload',\n 'resize',\n 'move',\n 'DOMContentLoaded',\n 'readystatechange',\n 'error',\n 'abort',\n 'scroll'\n])\n\n/**\n * ------------------------------------------------------------------------\n * Private methods\n * ------------------------------------------------------------------------\n */\n\nfunction getUidEvent(element, uid) {\n return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\n}\n\nfunction getEvent(element) {\n const uid = getUidEvent(element)\n\n element.uidEvent = uid\n eventRegistry[uid] = eventRegistry[uid] || {}\n\n return eventRegistry[uid]\n}\n\nfunction bootstrapHandler(element, fn) {\n return function handler(event) {\n event.delegateTarget = element\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, fn)\n }\n\n return fn.apply(element, [event])\n }\n}\n\nfunction bootstrapDelegationHandler(element, selector, fn) {\n return function handler(event) {\n const domElements = element.querySelectorAll(selector)\n\n for (let { target } = event; target && target !== this; target = target.parentNode) {\n for (let i = domElements.length; i--;) {\n if (domElements[i] === target) {\n event.delegateTarget = target\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, fn)\n }\n\n return fn.apply(target, [event])\n }\n }\n }\n\n // To please ESLint\n return null\n }\n}\n\nfunction findHandler(events, handler, delegationSelector = null) {\n const uidEventList = Object.keys(events)\n\n for (let i = 0, len = uidEventList.length; i < len; i++) {\n const event = events[uidEventList[i]]\n\n if (event.originalHandler === handler && event.delegationSelector === delegationSelector) {\n return event\n }\n }\n\n return null\n}\n\nfunction normalizeParams(originalTypeEvent, handler, delegationFn) {\n const delegation = typeof handler === 'string'\n const originalHandler = delegation ? delegationFn : handler\n\n // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n let typeEvent = originalTypeEvent.replace(stripNameRegex, '')\n const custom = customEvents[typeEvent]\n\n if (custom) {\n typeEvent = custom\n }\n\n const isNative = nativeEvents.has(typeEvent)\n\n if (!isNative) {\n typeEvent = originalTypeEvent\n }\n\n return [delegation, originalHandler, typeEvent]\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFn, oneOff) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n if (!handler) {\n handler = delegationFn\n delegationFn = null\n }\n\n const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn)\n const events = getEvent(element)\n const handlers = events[typeEvent] || (events[typeEvent] = {})\n const previousFn = findHandler(handlers, originalHandler, delegation ? handler : null)\n\n if (previousFn) {\n previousFn.oneOff = previousFn.oneOff && oneOff\n\n return\n }\n\n const uid = getUidEvent(originalHandler, originalTypeEvent.replace(namespaceRegex, ''))\n const fn = delegation ?\n bootstrapDelegationHandler(element, handler, delegationFn) :\n bootstrapHandler(element, handler)\n\n fn.delegationSelector = delegation ? handler : null\n fn.originalHandler = originalHandler\n fn.oneOff = oneOff\n fn.uidEvent = uid\n handlers[uid] = fn\n\n element.addEventListener(typeEvent, fn, delegation)\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n const fn = findHandler(events[typeEvent], handler, delegationSelector)\n\n if (!fn) {\n return\n }\n\n element.removeEventListener(typeEvent, fn, Boolean(delegationSelector))\n delete events[typeEvent][fn.uidEvent]\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n const storeElementEvent = events[typeEvent] || {}\n\n Object.keys(storeElementEvent).forEach(handlerKey => {\n if (handlerKey.includes(namespace)) {\n const event = storeElementEvent[handlerKey]\n\n removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector)\n }\n })\n}\n\nconst EventHandler = {\n on(element, event, handler, delegationFn) {\n addHandler(element, event, handler, delegationFn, false)\n },\n\n one(element, event, handler, delegationFn) {\n addHandler(element, event, handler, delegationFn, true)\n },\n\n off(element, originalTypeEvent, handler, delegationFn) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn)\n const inNamespace = typeEvent !== originalTypeEvent\n const events = getEvent(element)\n const isNamespace = originalTypeEvent.startsWith('.')\n\n if (typeof originalHandler !== 'undefined') {\n // Simplest case: handler is passed, remove that listener ONLY.\n if (!events || !events[typeEvent]) {\n return\n }\n\n removeHandler(element, events, typeEvent, originalHandler, delegation ? handler : null)\n return\n }\n\n if (isNamespace) {\n Object.keys(events).forEach(elementEvent => {\n removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\n })\n }\n\n const storeElementEvent = events[typeEvent] || {}\n Object.keys(storeElementEvent).forEach(keyHandlers => {\n const handlerKey = keyHandlers.replace(stripUidRegex, '')\n\n if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n const event = storeElementEvent[keyHandlers]\n\n removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector)\n }\n })\n },\n\n trigger(element, event, args) {\n if (typeof event !== 'string' || !element) {\n return null\n }\n\n const $ = getjQuery()\n const typeEvent = event.replace(stripNameRegex, '')\n const inNamespace = event !== typeEvent\n const isNative = nativeEvents.has(typeEvent)\n\n let jQueryEvent\n let bubbles = true\n let nativeDispatch = true\n let defaultPrevented = false\n let evt = null\n\n if (inNamespace && $) {\n jQueryEvent = $.Event(event, args)\n\n $(element).trigger(jQueryEvent)\n bubbles = !jQueryEvent.isPropagationStopped()\n nativeDispatch = !jQueryEvent.isImmediatePropagationStopped()\n defaultPrevented = jQueryEvent.isDefaultPrevented()\n }\n\n if (isNative) {\n evt = document.createEvent('HTMLEvents')\n evt.initEvent(typeEvent, bubbles, true)\n } else {\n evt = new CustomEvent(event, {\n bubbles,\n cancelable: true\n })\n }\n\n // merge custom information in our event\n if (typeof args !== 'undefined') {\n Object.keys(args).forEach(key => {\n Object.defineProperty(evt, key, {\n get() {\n return args[key]\n }\n })\n })\n }\n\n if (defaultPrevented) {\n evt.preventDefault()\n }\n\n if (nativeDispatch) {\n element.dispatchEvent(evt)\n }\n\n if (evt.defaultPrevented && typeof jQueryEvent !== 'undefined') {\n jQueryEvent.preventDefault()\n }\n\n return evt\n }\n}\n\nexport default EventHandler\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst VERSION = '5.0.0-beta1'\n\nclass BaseComponent {\n constructor(element) {\n if (!element) {\n return\n }\n\n this._element = element\n Data.setData(element, this.constructor.DATA_KEY, this)\n }\n\n dispose() {\n Data.removeData(this._element, this.constructor.DATA_KEY)\n this._element = null\n }\n\n /** Static */\n\n static getInstance(element) {\n return Data.getData(element, this.DATA_KEY)\n }\n\n static get VERSION() {\n return VERSION\n }\n}\n\nexport default BaseComponent\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n getjQuery,\n onDOMContentLoaded,\n TRANSITION_END,\n emulateTransitionEnd,\n getElementFromSelector,\n getTransitionDurationFromElement\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'alert'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst SELECTOR_DISMISS = '[data-bs-dismiss=\"alert\"]'\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`\nconst EVENT_CLOSED = `closed${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASSNAME_ALERT = 'alert'\nconst CLASSNAME_FADE = 'fade'\nconst CLASSNAME_SHOW = 'show'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Alert extends BaseComponent {\n // Getters\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n close(element) {\n const rootElement = element ? this._getRootElement(element) : this._element\n const customEvent = this._triggerCloseEvent(rootElement)\n\n if (customEvent === null || customEvent.defaultPrevented) {\n return\n }\n\n this._removeElement(rootElement)\n }\n\n // Private\n\n _getRootElement(element) {\n return getElementFromSelector(element) || element.closest(`.${CLASSNAME_ALERT}`)\n }\n\n _triggerCloseEvent(element) {\n return EventHandler.trigger(element, EVENT_CLOSE)\n }\n\n _removeElement(element) {\n element.classList.remove(CLASSNAME_SHOW)\n\n if (!element.classList.contains(CLASSNAME_FADE)) {\n this._destroyElement(element)\n return\n }\n\n const transitionDuration = getTransitionDurationFromElement(element)\n\n EventHandler.one(element, TRANSITION_END, () => this._destroyElement(element))\n emulateTransitionEnd(element, transitionDuration)\n }\n\n _destroyElement(element) {\n if (element.parentNode) {\n element.parentNode.removeChild(element)\n }\n\n EventHandler.trigger(element, EVENT_CLOSED)\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY)\n\n if (!data) {\n data = new Alert(this)\n }\n\n if (config === 'close') {\n data[config](this)\n }\n })\n }\n\n static handleDismiss(alertInstance) {\n return function (event) {\n if (event) {\n event.preventDefault()\n }\n\n alertInstance.close(this)\n }\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DISMISS, Alert.handleDismiss(new Alert()))\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Alert to jQuery only if jQuery is present\n */\n\nonDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Alert.jQueryInterface\n $.fn[NAME].Constructor = Alert\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Alert.jQueryInterface\n }\n }\n})\n\nexport default Alert\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery, onDOMContentLoaded } from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'button'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"button\"]'\n\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Button extends BaseComponent {\n // Getters\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n toggle() {\n // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE))\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY)\n\n if (!data) {\n data = new Button(this)\n }\n\n if (config === 'toggle') {\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, event => {\n event.preventDefault()\n\n const button = event.target.closest(SELECTOR_DATA_TOGGLE)\n\n let data = Data.getData(button, DATA_KEY)\n if (!data) {\n data = new Button(button)\n }\n\n data.toggle()\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Button to jQuery only if jQuery is present\n */\n\nonDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Button.jQueryInterface\n $.fn[NAME].Constructor = Button\n\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Button.jQueryInterface\n }\n }\n})\n\nexport default Button\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(val) {\n if (val === 'true') {\n return true\n }\n\n if (val === 'false') {\n return false\n }\n\n if (val === Number(val).toString()) {\n return Number(val)\n }\n\n if (val === '' || val === 'null') {\n return null\n }\n\n return val\n}\n\nfunction normalizeDataKey(key) {\n return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`)\n}\n\nconst Manipulator = {\n setDataAttribute(element, key, value) {\n element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value)\n },\n\n removeDataAttribute(element, key) {\n element.removeAttribute(`data-bs-${normalizeDataKey(key)}`)\n },\n\n getDataAttributes(element) {\n if (!element) {\n return {}\n }\n\n const attributes = {}\n\n Object.keys(element.dataset)\n .filter(key => key.startsWith('bs'))\n .forEach(key => {\n let pureKey = key.replace(/^bs/, '')\n pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length)\n attributes[pureKey] = normalizeData(element.dataset[key])\n })\n\n return attributes\n },\n\n getDataAttribute(element, key) {\n return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`))\n },\n\n offset(element) {\n const rect = element.getBoundingClientRect()\n\n return {\n top: rect.top + document.body.scrollTop,\n left: rect.left + document.body.scrollLeft\n }\n },\n\n position(element) {\n return {\n top: element.offsetTop,\n left: element.offsetLeft\n }\n }\n}\n\nexport default Manipulator\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NODE_TEXT = 3\n\nconst SelectorEngine = {\n matches(element, selector) {\n return element.matches(selector)\n },\n\n find(selector, element = document.documentElement) {\n return [].concat(...Element.prototype.querySelectorAll.call(element, selector))\n },\n\n findOne(selector, element = document.documentElement) {\n return Element.prototype.querySelector.call(element, selector)\n },\n\n children(element, selector) {\n const children = [].concat(...element.children)\n\n return children.filter(child => child.matches(selector))\n },\n\n parents(element, selector) {\n const parents = []\n\n let ancestor = element.parentNode\n\n while (ancestor && ancestor.nodeType === Node.ELEMENT_NODE && ancestor.nodeType !== NODE_TEXT) {\n if (this.matches(ancestor, selector)) {\n parents.push(ancestor)\n }\n\n ancestor = ancestor.parentNode\n }\n\n return parents\n },\n\n prev(element, selector) {\n let previous = element.previousElementSibling\n\n while (previous) {\n if (previous.matches(selector)) {\n return [previous]\n }\n\n previous = previous.previousElementSibling\n }\n\n return []\n },\n\n next(element, selector) {\n let next = element.nextElementSibling\n\n while (next) {\n if (this.matches(next, selector)) {\n return [next]\n }\n\n next = next.nextElementSibling\n }\n\n return []\n }\n}\n\nexport default SelectorEngine\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n getjQuery,\n onDOMContentLoaded,\n TRANSITION_END,\n emulateTransitionEnd,\n getElementFromSelector,\n getTransitionDurationFromElement,\n isVisible,\n reflow,\n triggerTransitionEnd,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'carousel'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n interval: 5000,\n keyboard: true,\n slide: false,\n pause: 'hover',\n wrap: true,\n touch: true\n}\n\nconst DefaultType = {\n interval: '(number|boolean)',\n keyboard: 'boolean',\n slide: '(boolean|string)',\n pause: '(string|boolean)',\n wrap: 'boolean',\n touch: 'boolean'\n}\n\nconst DIRECTION_NEXT = 'next'\nconst DIRECTION_PREV = 'prev'\nconst DIRECTION_LEFT = 'left'\nconst DIRECTION_RIGHT = 'right'\n\nconst EVENT_SLIDE = `slide${EVENT_KEY}`\nconst EVENT_SLID = `slid${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY}`\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_CAROUSEL = 'carousel'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_SLIDE = 'slide'\nconst CLASS_NAME_END = 'carousel-item-end'\nconst CLASS_NAME_START = 'carousel-item-start'\nconst CLASS_NAME_NEXT = 'carousel-item-next'\nconst CLASS_NAME_PREV = 'carousel-item-prev'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\n\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ACTIVE_ITEM = '.active.carousel-item'\nconst SELECTOR_ITEM = '.carousel-item'\nconst SELECTOR_ITEM_IMG = '.carousel-item img'\nconst SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]'\n\nconst PointerType = {\n TOUCH: 'touch',\n PEN: 'pen'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\nclass Carousel extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._items = null\n this._interval = null\n this._activeElement = null\n this._isPaused = false\n this._isSliding = false\n this.touchTimeout = null\n this.touchStartX = 0\n this.touchDeltaX = 0\n\n this._config = this._getConfig(config)\n this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n this._pointerEvent = Boolean(window.PointerEvent)\n\n this._addEventListeners()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n next() {\n if (!this._isSliding) {\n this._slide(DIRECTION_NEXT)\n }\n }\n\n nextWhenVisible() {\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden && isVisible(this._element)) {\n this.next()\n }\n }\n\n prev() {\n if (!this._isSliding) {\n this._slide(DIRECTION_PREV)\n }\n }\n\n pause(event) {\n if (!event) {\n this._isPaused = true\n }\n\n if (SelectorEngine.findOne(SELECTOR_NEXT_PREV, this._element)) {\n triggerTransitionEnd(this._element)\n this.cycle(true)\n }\n\n clearInterval(this._interval)\n this._interval = null\n }\n\n cycle(event) {\n if (!event) {\n this._isPaused = false\n }\n\n if (this._interval) {\n clearInterval(this._interval)\n this._interval = null\n }\n\n if (this._config && this._config.interval && !this._isPaused) {\n this._updateInterval()\n\n this._interval = setInterval(\n (document.visibilityState ? this.nextWhenVisible : this.next).bind(this),\n this._config.interval\n )\n }\n }\n\n to(index) {\n this._activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n const activeIndex = this._getItemIndex(this._activeElement)\n\n if (index > this._items.length - 1 || index < 0) {\n return\n }\n\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.to(index))\n return\n }\n\n if (activeIndex === index) {\n this.pause()\n this.cycle()\n return\n }\n\n const direction = index > activeIndex ?\n DIRECTION_NEXT :\n DIRECTION_PREV\n\n this._slide(direction, this._items[index])\n }\n\n dispose() {\n super.dispose()\n EventHandler.off(this._element, EVENT_KEY)\n\n this._items = null\n this._config = null\n this._interval = null\n this._isPaused = null\n this._isSliding = null\n this._activeElement = null\n this._indicatorsElement = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _handleSwipe() {\n const absDeltax = Math.abs(this.touchDeltaX)\n\n if (absDeltax <= SWIPE_THRESHOLD) {\n return\n }\n\n const direction = absDeltax / this.touchDeltaX\n\n this.touchDeltaX = 0\n\n // swipe left\n if (direction > 0) {\n this.prev()\n }\n\n // swipe right\n if (direction < 0) {\n this.next()\n }\n }\n\n _addEventListeners() {\n if (this._config.keyboard) {\n EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n }\n\n if (this._config.pause === 'hover') {\n EventHandler.on(this._element, EVENT_MOUSEENTER, event => this.pause(event))\n EventHandler.on(this._element, EVENT_MOUSELEAVE, event => this.cycle(event))\n }\n\n if (this._config.touch && this._touchSupported) {\n this._addTouchEventListeners()\n }\n }\n\n _addTouchEventListeners() {\n const start = event => {\n if (this._pointerEvent && PointerType[event.pointerType.toUpperCase()]) {\n this.touchStartX = event.clientX\n } else if (!this._pointerEvent) {\n this.touchStartX = event.touches[0].clientX\n }\n }\n\n const move = event => {\n // ensure swiping with one touch and not pinching\n if (event.touches && event.touches.length > 1) {\n this.touchDeltaX = 0\n } else {\n this.touchDeltaX = event.touches[0].clientX - this.touchStartX\n }\n }\n\n const end = event => {\n if (this._pointerEvent && PointerType[event.pointerType.toUpperCase()]) {\n this.touchDeltaX = event.clientX - this.touchStartX\n }\n\n this._handleSwipe()\n if (this._config.pause === 'hover') {\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n\n this.pause()\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout)\n }\n\n this.touchTimeout = setTimeout(event => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n }\n }\n\n SelectorEngine.find(SELECTOR_ITEM_IMG, this._element).forEach(itemImg => {\n EventHandler.on(itemImg, EVENT_DRAG_START, e => e.preventDefault())\n })\n\n if (this._pointerEvent) {\n EventHandler.on(this._element, EVENT_POINTERDOWN, event => start(event))\n EventHandler.on(this._element, EVENT_POINTERUP, event => end(event))\n\n this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n } else {\n EventHandler.on(this._element, EVENT_TOUCHSTART, event => start(event))\n EventHandler.on(this._element, EVENT_TOUCHMOVE, event => move(event))\n EventHandler.on(this._element, EVENT_TOUCHEND, event => end(event))\n }\n }\n\n _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return\n }\n\n switch (event.key) {\n case ARROW_LEFT_KEY:\n event.preventDefault()\n this.prev()\n break\n case ARROW_RIGHT_KEY:\n event.preventDefault()\n this.next()\n break\n default:\n }\n }\n\n _getItemIndex(element) {\n this._items = element && element.parentNode ?\n SelectorEngine.find(SELECTOR_ITEM, element.parentNode) :\n []\n\n return this._items.indexOf(element)\n }\n\n _getItemByDirection(direction, activeElement) {\n const isNextDirection = direction === DIRECTION_NEXT\n const isPrevDirection = direction === DIRECTION_PREV\n const activeIndex = this._getItemIndex(activeElement)\n const lastItemIndex = this._items.length - 1\n const isGoingToWrap = (isPrevDirection && activeIndex === 0) ||\n (isNextDirection && activeIndex === lastItemIndex)\n\n if (isGoingToWrap && !this._config.wrap) {\n return activeElement\n }\n\n const delta = direction === DIRECTION_PREV ? -1 : 1\n const itemIndex = (activeIndex + delta) % this._items.length\n\n return itemIndex === -1 ?\n this._items[this._items.length - 1] :\n this._items[itemIndex]\n }\n\n _triggerSlideEvent(relatedTarget, eventDirectionName) {\n const targetIndex = this._getItemIndex(relatedTarget)\n const fromIndex = this._getItemIndex(SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element))\n\n return EventHandler.trigger(this._element, EVENT_SLIDE, {\n relatedTarget,\n direction: eventDirectionName,\n from: fromIndex,\n to: targetIndex\n })\n }\n\n _setActiveIndicatorElement(element) {\n if (this._indicatorsElement) {\n const indicators = SelectorEngine.find(SELECTOR_ACTIVE, this._indicatorsElement)\n\n for (let i = 0; i < indicators.length; i++) {\n indicators[i].classList.remove(CLASS_NAME_ACTIVE)\n }\n\n const nextIndicator = this._indicatorsElement.children[\n this._getItemIndex(element)\n ]\n\n if (nextIndicator) {\n nextIndicator.classList.add(CLASS_NAME_ACTIVE)\n }\n }\n }\n\n _updateInterval() {\n const element = this._activeElement || SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n\n if (!element) {\n return\n }\n\n const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10)\n\n if (elementInterval) {\n this._config.defaultInterval = this._config.defaultInterval || this._config.interval\n this._config.interval = elementInterval\n } else {\n this._config.interval = this._config.defaultInterval || this._config.interval\n }\n }\n\n _slide(direction, element) {\n const activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n const activeElementIndex = this._getItemIndex(activeElement)\n const nextElement = element || (activeElement && this._getItemByDirection(direction, activeElement))\n\n const nextElementIndex = this._getItemIndex(nextElement)\n const isCycling = Boolean(this._interval)\n\n let directionalClassName\n let orderClassName\n let eventDirectionName\n\n if (direction === DIRECTION_NEXT) {\n directionalClassName = CLASS_NAME_START\n orderClassName = CLASS_NAME_NEXT\n eventDirectionName = DIRECTION_LEFT\n } else {\n directionalClassName = CLASS_NAME_END\n orderClassName = CLASS_NAME_PREV\n eventDirectionName = DIRECTION_RIGHT\n }\n\n if (nextElement && nextElement.classList.contains(CLASS_NAME_ACTIVE)) {\n this._isSliding = false\n return\n }\n\n const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName)\n if (slideEvent.defaultPrevented) {\n return\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n return\n }\n\n this._isSliding = true\n\n if (isCycling) {\n this.pause()\n }\n\n this._setActiveIndicatorElement(nextElement)\n this._activeElement = nextElement\n\n if (this._element.classList.contains(CLASS_NAME_SLIDE)) {\n nextElement.classList.add(orderClassName)\n\n reflow(nextElement)\n\n activeElement.classList.add(directionalClassName)\n nextElement.classList.add(directionalClassName)\n\n const transitionDuration = getTransitionDurationFromElement(activeElement)\n\n EventHandler.one(activeElement, TRANSITION_END, () => {\n nextElement.classList.remove(directionalClassName, orderClassName)\n nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n activeElement.classList.remove(CLASS_NAME_ACTIVE, orderClassName, directionalClassName)\n\n this._isSliding = false\n\n setTimeout(() => {\n EventHandler.trigger(this._element, EVENT_SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n })\n }, 0)\n })\n\n emulateTransitionEnd(activeElement, transitionDuration)\n } else {\n activeElement.classList.remove(CLASS_NAME_ACTIVE)\n nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n this._isSliding = false\n EventHandler.trigger(this._element, EVENT_SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n })\n }\n\n if (isCycling) {\n this.cycle()\n }\n }\n\n // Static\n\n static carouselInterface(element, config) {\n let data = Data.getData(element, DATA_KEY)\n let _config = {\n ...Default,\n ...Manipulator.getDataAttributes(element)\n }\n\n if (typeof config === 'object') {\n _config = {\n ..._config,\n ...config\n }\n }\n\n const action = typeof config === 'string' ? config : _config.slide\n\n if (!data) {\n data = new Carousel(element, _config)\n }\n\n if (typeof config === 'number') {\n data.to(config)\n } else if (typeof action === 'string') {\n if (typeof data[action] === 'undefined') {\n throw new TypeError(`No method named \"${action}\"`)\n }\n\n data[action]()\n } else if (_config.interval && _config.ride) {\n data.pause()\n data.cycle()\n }\n }\n\n static jQueryInterface(config) {\n return this.each(function () {\n Carousel.carouselInterface(this, config)\n })\n }\n\n static dataApiClickHandler(event) {\n const target = getElementFromSelector(this)\n\n if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n return\n }\n\n const config = {\n ...Manipulator.getDataAttributes(target),\n ...Manipulator.getDataAttributes(this)\n }\n const slideIndex = this.getAttribute('data-bs-slide-to')\n\n if (slideIndex) {\n config.interval = false\n }\n\n Carousel.carouselInterface(target, config)\n\n if (slideIndex) {\n Data.getData(target, DATA_KEY).to(slideIndex)\n }\n\n event.preventDefault()\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, Carousel.dataApiClickHandler)\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE)\n\n for (let i = 0, len = carousels.length; i < len; i++) {\n Carousel.carouselInterface(carousels[i], Data.getData(carousels[i], DATA_KEY))\n }\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Carousel to jQuery only if jQuery is present\n */\n\nonDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Carousel.jQueryInterface\n $.fn[NAME].Constructor = Carousel\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Carousel.jQueryInterface\n }\n }\n})\n\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n getjQuery,\n onDOMContentLoaded,\n TRANSITION_END,\n emulateTransitionEnd,\n getSelectorFromElement,\n getElementFromSelector,\n getTransitionDurationFromElement,\n isElement,\n reflow,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'collapse'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst Default = {\n toggle: true,\n parent: ''\n}\n\nconst DefaultType = {\n toggle: 'boolean',\n parent: '(string|element)'\n}\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_COLLAPSE = 'collapse'\nconst CLASS_NAME_COLLAPSING = 'collapsing'\nconst CLASS_NAME_COLLAPSED = 'collapsed'\n\nconst WIDTH = 'width'\nconst HEIGHT = 'height'\n\nconst SELECTOR_ACTIVES = '.show, .collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"collapse\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Collapse extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._isTransitioning = false\n this._config = this._getConfig(config)\n this._triggerArray = SelectorEngine.find(\n `${SELECTOR_DATA_TOGGLE}[href=\"#${element.id}\"],` +\n `${SELECTOR_DATA_TOGGLE}[data-bs-target=\"#${element.id}\"]`\n )\n\n const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n for (let i = 0, len = toggleList.length; i < len; i++) {\n const elem = toggleList[i]\n const selector = getSelectorFromElement(elem)\n const filterElement = SelectorEngine.find(selector)\n .filter(foundElem => foundElem === element)\n\n if (selector !== null && filterElement.length) {\n this._selector = selector\n this._triggerArray.push(elem)\n }\n }\n\n this._parent = this._config.parent ? this._getParent() : null\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._element, this._triggerArray)\n }\n\n if (this._config.toggle) {\n this.toggle()\n }\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n toggle() {\n if (this._element.classList.contains(CLASS_NAME_SHOW)) {\n this.hide()\n } else {\n this.show()\n }\n }\n\n show() {\n if (this._isTransitioning || this._element.classList.contains(CLASS_NAME_SHOW)) {\n return\n }\n\n let actives\n let activesData\n\n if (this._parent) {\n actives = SelectorEngine.find(SELECTOR_ACTIVES, this._parent)\n .filter(elem => {\n if (typeof this._config.parent === 'string') {\n return elem.getAttribute('data-bs-parent') === this._config.parent\n }\n\n return elem.classList.contains(CLASS_NAME_COLLAPSE)\n })\n\n if (actives.length === 0) {\n actives = null\n }\n }\n\n const container = SelectorEngine.findOne(this._selector)\n if (actives) {\n const tempActiveData = actives.find(elem => container !== elem)\n activesData = tempActiveData ? Data.getData(tempActiveData, DATA_KEY) : null\n\n if (activesData && activesData._isTransitioning) {\n return\n }\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n if (startEvent.defaultPrevented) {\n return\n }\n\n if (actives) {\n actives.forEach(elemActive => {\n if (container !== elemActive) {\n Collapse.collapseInterface(elemActive, 'hide')\n }\n\n if (!activesData) {\n Data.setData(elemActive, DATA_KEY, null)\n }\n })\n }\n\n const dimension = this._getDimension()\n\n this._element.classList.remove(CLASS_NAME_COLLAPSE)\n this._element.classList.add(CLASS_NAME_COLLAPSING)\n\n this._element.style[dimension] = 0\n\n if (this._triggerArray.length) {\n this._triggerArray.forEach(element => {\n element.classList.remove(CLASS_NAME_COLLAPSED)\n element.setAttribute('aria-expanded', true)\n })\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n this._element.classList.remove(CLASS_NAME_COLLAPSING)\n this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n this._element.style[dimension] = ''\n\n this.setTransitioning(false)\n\n EventHandler.trigger(this._element, EVENT_SHOWN)\n }\n\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n const scrollSize = `scroll${capitalizedDimension}`\n const transitionDuration = getTransitionDurationFromElement(this._element)\n\n EventHandler.one(this._element, TRANSITION_END, complete)\n\n emulateTransitionEnd(this._element, transitionDuration)\n this._element.style[dimension] = `${this._element[scrollSize]}px`\n }\n\n hide() {\n if (this._isTransitioning || !this._element.classList.contains(CLASS_NAME_SHOW)) {\n return\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n if (startEvent.defaultPrevented) {\n return\n }\n\n const dimension = this._getDimension()\n\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n reflow(this._element)\n\n this._element.classList.add(CLASS_NAME_COLLAPSING)\n this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n const triggerArrayLength = this._triggerArray.length\n if (triggerArrayLength > 0) {\n for (let i = 0; i < triggerArrayLength; i++) {\n const trigger = this._triggerArray[i]\n const elem = getElementFromSelector(trigger)\n\n if (elem && !elem.classList.contains(CLASS_NAME_SHOW)) {\n trigger.classList.add(CLASS_NAME_COLLAPSED)\n trigger.setAttribute('aria-expanded', false)\n }\n }\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n this.setTransitioning(false)\n this._element.classList.remove(CLASS_NAME_COLLAPSING)\n this._element.classList.add(CLASS_NAME_COLLAPSE)\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n this._element.style[dimension] = ''\n const transitionDuration = getTransitionDurationFromElement(this._element)\n\n EventHandler.one(this._element, TRANSITION_END, complete)\n emulateTransitionEnd(this._element, transitionDuration)\n }\n\n setTransitioning(isTransitioning) {\n this._isTransitioning = isTransitioning\n }\n\n dispose() {\n super.dispose()\n this._config = null\n this._parent = null\n this._triggerArray = null\n this._isTransitioning = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n config.toggle = Boolean(config.toggle) // Coerce string values\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _getDimension() {\n return this._element.classList.contains(WIDTH) ? WIDTH : HEIGHT\n }\n\n _getParent() {\n let { parent } = this._config\n\n if (isElement(parent)) {\n // it's a jQuery object\n if (typeof parent.jquery !== 'undefined' || typeof parent[0] !== 'undefined') {\n parent = parent[0]\n }\n } else {\n parent = SelectorEngine.findOne(parent)\n }\n\n const selector = `${SELECTOR_DATA_TOGGLE}[data-bs-parent=\"${parent}\"]`\n\n SelectorEngine.find(selector, parent)\n .forEach(element => {\n const selected = getElementFromSelector(element)\n\n this._addAriaAndCollapsedClass(\n selected,\n [element]\n )\n })\n\n return parent\n }\n\n _addAriaAndCollapsedClass(element, triggerArray) {\n if (!element || !triggerArray.length) {\n return\n }\n\n const isOpen = element.classList.contains(CLASS_NAME_SHOW)\n\n triggerArray.forEach(elem => {\n if (isOpen) {\n elem.classList.remove(CLASS_NAME_COLLAPSED)\n } else {\n elem.classList.add(CLASS_NAME_COLLAPSED)\n }\n\n elem.setAttribute('aria-expanded', isOpen)\n })\n }\n\n // Static\n\n static collapseInterface(element, config) {\n let data = Data.getData(element, DATA_KEY)\n const _config = {\n ...Default,\n ...Manipulator.getDataAttributes(element),\n ...(typeof config === 'object' && config ? config : {})\n }\n\n if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false\n }\n\n if (!data) {\n data = new Collapse(element, _config)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n }\n\n static jQueryInterface(config) {\n return this.each(function () {\n Collapse.collapseInterface(this, config)\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n // preventDefault only for elements (which change the URL) not inside the collapsible element\n if (event.target.tagName === 'A') {\n event.preventDefault()\n }\n\n const triggerData = Manipulator.getDataAttributes(this)\n const selector = getSelectorFromElement(this)\n const selectorElements = SelectorEngine.find(selector)\n\n selectorElements.forEach(element => {\n const data = Data.getData(element, DATA_KEY)\n let config\n if (data) {\n // update parent attribute\n if (data._parent === null && typeof triggerData.parent === 'string') {\n data._config.parent = triggerData.parent\n data._parent = data._getParent()\n }\n\n config = 'toggle'\n } else {\n config = triggerData\n }\n\n Collapse.collapseInterface(element, config)\n })\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Collapse to jQuery only if jQuery is present\n */\n\nonDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Collapse.jQueryInterface\n $.fn[NAME].Constructor = Collapse\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Collapse.jQueryInterface\n }\n }\n})\n\nexport default Collapse\n","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","/*:: import type { Window } from '../types'; */\n\n/*:: declare function getWindow(node: Node | Window): Window; */\nexport default function getWindow(node) {\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\n/*:: declare function isElement(node: mixed): boolean %checks(node instanceof\n Element); */\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n/*:: declare function isHTMLElement(node: mixed): boolean %checks(node instanceof\n HTMLElement); */\n\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n/*:: declare function isShadowRoot(node: mixed): boolean %checks(node instanceof\n ShadowRoot); */\n\n\nfunction isShadowRoot(node) {\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","// Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\nexport default function getLayoutRect(element) {\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: element.offsetWidth,\n height: element.offsetHeight\n };\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe: assume body is always available\n return ((isElement(element) ? element.ownerDocument : element.document) || window.document).documentElement;\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// $FlowFixMe: this is a quicker (but less type safe) way to save quite some bytes from the bundle\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || // DOM Element detected\n // $FlowFixMe: need a better way to handle this...\n element.host || // ShadowRoot detected\n // $FlowFixMe: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n var offsetParent = element.offsetParent;\n\n if (offsetParent) {\n var html = getDocumentElement(offsetParent);\n\n if (getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static' && getComputedStyle(html).position !== 'static') {\n return html;\n }\n }\n\n return offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var currentNode = getParentNode(element);\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.willChange && css.willChange !== 'auto') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static') {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","export default function within(min, value, max) {\n return Math.max(min, Math.min(value, max));\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign(Object.assign({}, getFreshSideObject()), paddingObject);\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport within from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = state.modifiersData[name + \"#persistent\"].padding;\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element,\n _options$padding = options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n if (!isHTMLElement(arrowElement)) {\n console.error(['Popper: \"arrow\" element must be an HTMLElement (not an SVGElement).', 'To use an SVG arrow, wrap it in an HTMLElement that will be used as', 'the arrow.'].join(' '));\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: \"arrow\" modifier\\'s `element` must be a child of the popper', 'element.'].join(' '));\n }\n\n return;\n }\n\n state.elements.arrow = arrowElement;\n state.modifiersData[name + \"#persistent\"] = {\n padding: mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements))\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","import { top, left, right, bottom } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsets(_ref) {\n var x = _ref.x,\n y = _ref.y;\n var win = window;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: Math.round(x * dpr) / dpr || 0,\n y: Math.round(y * dpr) / dpr || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive;\n\n var _roundOffsets = roundOffsets(offsets),\n x = _roundOffsets.x,\n y = _roundOffsets.y;\n\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n } // $FlowFixMe: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n /*:: offsetParent = (offsetParent: Element); */\n\n\n if (placement === top) {\n sideY = bottom;\n y -= offsetParent.clientHeight - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left) {\n sideX = right;\n x -= offsetParent.clientWidth - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign(Object.assign({}, commonStyles), {}, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) < 2 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign(Object.assign({}, commonStyles), {}, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref3) {\n var state = _ref3.state,\n options = _ref3.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive;\n\n if (process.env.NODE_ENV !== \"production\") {\n var transitionProperty = getComputedStyle(state.elements.popper).transitionProperty || '';\n\n if (adaptive && ['transform', 'top', 'right', 'bottom', 'left'].some(function (property) {\n return transitionProperty.indexOf(property) >= 0;\n })) {\n console.warn(['Popper: Detected CSS transitions on at least one of the following', 'CSS properties: \"transform\", \"top\", \"right\", \"bottom\", \"left\".', '\\n\\n', 'Disable the \"computeStyles\" modifier\\'s `adaptive` option to allow', 'for smooth transitions, or remove these properties from the CSS', 'transition declaration on the popper element if only transitioning', 'opacity or background-color for example.', '\\n\\n', 'We recommend using the popper element as a wrapper around an inner', 'element that can have any CSS property transitioned for animations.'].join(' '));\n }\n }\n\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign(Object.assign({}, state.styles.popper), mapToStyles(Object.assign(Object.assign({}, commonStyles), {}, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign(Object.assign({}, state.styles.arrow), mapToStyles(Object.assign(Object.assign({}, commonStyles), {}, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false\n })));\n }\n\n state.attributes.popper = Object.assign(Object.assign({}, state.attributes.popper), {}, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","export default function getBoundingClientRect(element) {\n var rect = element.getBoundingClientRect();\n return {\n width: rect.width,\n height: rect.height,\n top: rect.top,\n right: rect.right,\n bottom: rect.bottom,\n left: rect.left,\n x: rect.left,\n y: rect.top\n };\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on \n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the \nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = getNodeName(scrollParent) === 'body';\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","export default function rectToClientRect(rect) {\n return Object.assign(Object.assign({}, rect), {}, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\n\nfunction getInnerBoundingClientRect(element) {\n var rect = getBoundingClientRect(element);\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isHTMLElement(clippingParent) ? getInnerBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent);\n accRect.top = Math.max(rect.top, accRect.top);\n accRect.right = Math.min(rect.right, accRect.right);\n accRect.bottom = Math.min(rect.bottom, accRect.bottom);\n accRect.left = Math.max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nexport default function getViewportRect(element) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0; // NB: This isn't supported on iOS <= 12. If the keyboard is open, the popper\n // can be obscured underneath it.\n // Also, `html.clientHeight` adds the bottom bar height in Safari iOS, even\n // if it isn't open, so if this isn't available, the popper will be detected\n // to overflow the bottom of the screen too early.\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height; // Uses Layout Viewport (like Chrome; Safari does not currently)\n // In Chrome, it returns a value very close to 0 (+/-) but contains rounding\n // errors due to floating point numbers, so we need to check precision.\n // Safari returns a number <= 0, usually < -1 when pinch-zoomed\n // Feature detection fails in mobile emulation mode in Chrome.\n // Math.abs(win.innerWidth / visualViewport.scale - visualViewport.width) <\n // 0.001\n // Fallback here: \"Not Safari\" userAgent\n\n if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = element.ownerDocument.body;\n var width = Math.max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = Math.max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += Math.max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = Math.floor(offsets[mainAxis]) - Math.floor(reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = Math.floor(offsets[mainAxis]) + Math.ceil(reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var referenceElement = state.elements.reference;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary);\n var referenceClientRect = getBoundingClientRect(referenceElement);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign(Object.assign({}, popperRect), popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\n\n/*:: type OverflowsMap = { [ComputedPlacement]: number }; */\n\n/*;; type OverflowsMap = { [key in ComputedPlacement]: number }; */\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements; // $FlowFixMe\n\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: The `allowedAutoPlacements` option did not allow any', 'placements. Ensure the `placement` option matches the variation', 'of the allowed placements.', 'For example, \"auto\" cannot be used to allow \"bottom-start\".', 'Use \"auto-start\" instead.'].join(' '));\n }\n } // $FlowFixMe: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign(Object.assign({}, state.attributes.popper), {}, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\";\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign(Object.assign({}, rects), {}, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport within from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign(Object.assign({}, state.rects), {}, {\n placement: state.placement\n })) : tetherOffset;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = popperOffsets[mainAxis] + overflow[mainSide];\n var max = popperOffsets[mainAxis] - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - tetherOffsetValue : minLen - arrowLen - arrowPaddingMin - tetherOffsetValue;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + tetherOffsetValue : maxLen + arrowLen + arrowPaddingMax + tetherOffsetValue;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = state.modifiersData.offset ? state.modifiersData.offset[state.placement][mainAxis] : 0;\n var tetherMin = popperOffsets[mainAxis] + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = popperOffsets[mainAxis] + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? Math.min(min, tetherMin) : min, offset, tether ? Math.max(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var _preventedOffset = within(_min, _offset, _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\"; // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement);\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport getComputedStyle from \"./dom-utils/getComputedStyle.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport validateModifiers from \"./utils/validateModifiers.js\";\nimport uniqueBy from \"./utils/uniqueBy.js\";\nimport getBasePlacement from \"./utils/getBasePlacement.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nimport { auto } from \"./enums.js\";\nvar INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.';\nvar INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.';\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign(Object.assign({}, DEFAULT_OPTIONS), defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(options) {\n cleanupModifierEffects();\n state.options = Object.assign(Object.assign(Object.assign({}, defaultOptions), state.options), options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n }); // Validate the provided modifiers so that the consumer will get warned\n // if one of the modifiers is invalid for any reason\n\n if (process.env.NODE_ENV !== \"production\") {\n var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function (_ref) {\n var name = _ref.name;\n return name;\n });\n validateModifiers(modifiers);\n\n if (getBasePlacement(state.options.placement) === auto) {\n var flipModifier = state.orderedModifiers.find(function (_ref2) {\n var name = _ref2.name;\n return name === 'flip';\n });\n\n if (!flipModifier) {\n console.error(['Popper: \"auto\" placements require the \"flip\" modifier be', 'present and enabled to work.'].join(' '));\n }\n }\n\n var _getComputedStyle = getComputedStyle(popper),\n marginTop = _getComputedStyle.marginTop,\n marginRight = _getComputedStyle.marginRight,\n marginBottom = _getComputedStyle.marginBottom,\n marginLeft = _getComputedStyle.marginLeft; // We no longer take into account `margins` on the popper, and it can\n // cause bugs with positioning, so we'll warn the consumer\n\n\n if ([marginTop, marginRight, marginBottom, marginLeft].some(function (margin) {\n return parseFloat(margin);\n })) {\n console.warn(['Popper: CSS \"margin\" styles cannot be used to apply padding', 'between the popper and its reference element or boundary.', 'To replicate margin, use the `offset` modifier, as well as', 'the `padding` option in the `preventOverflow` and `flip`', 'modifiers.'].join(' '));\n }\n }\n\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n var __debug_loops__ = 0;\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (process.env.NODE_ENV !== \"production\") {\n __debug_loops__ += 1;\n\n if (__debug_loops__ > 100) {\n console.error(INFINITE_LOOP_ERROR);\n break;\n }\n }\n\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref3) {\n var name = _ref3.name,\n _ref3$options = _ref3.options,\n options = _ref3$options === void 0 ? {} : _ref3$options,\n effect = _ref3.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign(Object.assign(Object.assign({}, existing), current), {}, {\n options: Object.assign(Object.assign({}, existing.options), current.options),\n data: Object.assign(Object.assign({}, existing.data), current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow };","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\n\nimport {\n getjQuery,\n onDOMContentLoaded,\n getElementFromSelector,\n isElement,\n isVisible,\n isRTL,\n noop,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'dropdown'\nconst DATA_KEY = 'bs.dropdown'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst SPACE_KEY = 'Space'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst RIGHT_MOUSE_BUTTON = 2 // MouseEvent.button value for the secondary button, usually the right button\n\nconst REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEY}|${ARROW_DOWN_KEY}|${ESCAPE_KEY}`)\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK = `click${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DISABLED = 'disabled'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_DROPUP = 'dropup'\nconst CLASS_NAME_DROPEND = 'dropend'\nconst CLASS_NAME_DROPSTART = 'dropstart'\nconst CLASS_NAME_NAVBAR = 'navbar'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dropdown\"]'\nconst SELECTOR_FORM_CHILD = '.dropdown form'\nconst SELECTOR_MENU = '.dropdown-menu'\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav'\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n\nconst PLACEMENT_TOP = isRTL ? 'top-end' : 'top-start'\nconst PLACEMENT_TOPEND = isRTL ? 'top-start' : 'top-end'\nconst PLACEMENT_BOTTOM = isRTL ? 'bottom-end' : 'bottom-start'\nconst PLACEMENT_BOTTOMEND = isRTL ? 'bottom-start' : 'bottom-end'\nconst PLACEMENT_RIGHT = isRTL ? 'left-start' : 'right-start'\nconst PLACEMENT_LEFT = isRTL ? 'right-start' : 'left-start'\n\nconst Default = {\n offset: 0,\n flip: true,\n boundary: 'clippingParents',\n reference: 'toggle',\n display: 'dynamic',\n popperConfig: null\n}\n\nconst DefaultType = {\n offset: '(number|string|function)',\n flip: 'boolean',\n boundary: '(string|element)',\n reference: '(string|element)',\n display: 'string',\n popperConfig: '(null|object)'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Dropdown extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._popper = null\n this._config = this._getConfig(config)\n this._menu = this._getMenuElement()\n this._inNavbar = this._detectNavbar()\n\n this._addEventListeners()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n toggle() {\n if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED)) {\n return\n }\n\n const isActive = this._element.classList.contains(CLASS_NAME_SHOW)\n\n Dropdown.clearMenus()\n\n if (isActive) {\n return\n }\n\n this.show()\n }\n\n show() {\n if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED) || this._menu.classList.contains(CLASS_NAME_SHOW)) {\n return\n }\n\n const parent = Dropdown.getParentFromElement(this._element)\n const relatedTarget = {\n relatedTarget: this._element\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, relatedTarget)\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n // Totally disable Popper for Dropdowns in Navbar\n if (!this._inNavbar) {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)')\n }\n\n let referenceElement = this._element\n\n if (this._config.reference === 'parent') {\n referenceElement = parent\n } else if (isElement(this._config.reference)) {\n referenceElement = this._config.reference\n\n // Check if it's jQuery element\n if (typeof this._config.reference.jquery !== 'undefined') {\n referenceElement = this._config.reference[0]\n }\n }\n\n this._popper = Popper.createPopper(referenceElement, this._menu, this._getPopperConfig())\n }\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement &&\n !parent.closest(SELECTOR_NAVBAR_NAV)) {\n [].concat(...document.body.children)\n .forEach(elem => EventHandler.on(elem, 'mouseover', null, noop()))\n }\n\n this._element.focus()\n this._element.setAttribute('aria-expanded', true)\n\n this._menu.classList.toggle(CLASS_NAME_SHOW)\n this._element.classList.toggle(CLASS_NAME_SHOW)\n EventHandler.trigger(parent, EVENT_SHOWN, relatedTarget)\n }\n\n hide() {\n if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED) || !this._menu.classList.contains(CLASS_NAME_SHOW)) {\n return\n }\n\n const parent = Dropdown.getParentFromElement(this._element)\n const relatedTarget = {\n relatedTarget: this._element\n }\n\n const hideEvent = EventHandler.trigger(parent, EVENT_HIDE, relatedTarget)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n if (this._popper) {\n this._popper.destroy()\n }\n\n this._menu.classList.toggle(CLASS_NAME_SHOW)\n this._element.classList.toggle(CLASS_NAME_SHOW)\n EventHandler.trigger(parent, EVENT_HIDDEN, relatedTarget)\n }\n\n dispose() {\n super.dispose()\n EventHandler.off(this._element, EVENT_KEY)\n this._menu = null\n\n if (this._popper) {\n this._popper.destroy()\n this._popper = null\n }\n }\n\n update() {\n this._inNavbar = this._detectNavbar()\n if (this._popper) {\n this._popper.update()\n }\n }\n\n // Private\n\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_CLICK, event => {\n event.preventDefault()\n event.stopPropagation()\n this.toggle()\n })\n }\n\n _getConfig(config) {\n config = {\n ...this.constructor.Default,\n ...Manipulator.getDataAttributes(this._element),\n ...config\n }\n\n typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n return config\n }\n\n _getMenuElement() {\n return SelectorEngine.next(this._element, SELECTOR_MENU)[0]\n }\n\n _getPlacement() {\n const parentDropdown = this._element.parentNode\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {\n return PLACEMENT_RIGHT\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {\n return PLACEMENT_LEFT\n }\n\n // We need to trim the value because custom properties can also include spaces\n const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end'\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {\n return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP\n }\n\n return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM\n }\n\n _detectNavbar() {\n return this._element.closest(`.${CLASS_NAME_NAVBAR}`) !== null\n }\n\n _getPopperConfig() {\n const popperConfig = {\n placement: this._getPlacement(),\n modifiers: [{\n name: 'preventOverflow',\n options: {\n altBoundary: this._config.flip,\n rootBoundary: this._config.boundary\n }\n }]\n }\n\n // Disable Popper if we have a static display\n if (this._config.display === 'static') {\n popperConfig.modifiers = [{\n name: 'applyStyles',\n enabled: false\n }]\n }\n\n return {\n ...popperConfig,\n ...this._config.popperConfig\n }\n }\n\n // Static\n\n static dropdownInterface(element, config) {\n let data = Data.getData(element, DATA_KEY)\n const _config = typeof config === 'object' ? config : null\n\n if (!data) {\n data = new Dropdown(element, _config)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n }\n\n static jQueryInterface(config) {\n return this.each(function () {\n Dropdown.dropdownInterface(this, config)\n })\n }\n\n static clearMenus(event) {\n if (event && (event.button === RIGHT_MOUSE_BUTTON || (event.type === 'keyup' && event.key !== TAB_KEY))) {\n return\n }\n\n const toggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n for (let i = 0, len = toggles.length; i < len; i++) {\n const parent = Dropdown.getParentFromElement(toggles[i])\n const context = Data.getData(toggles[i], DATA_KEY)\n const relatedTarget = {\n relatedTarget: toggles[i]\n }\n\n if (event && event.type === 'click') {\n relatedTarget.clickEvent = event\n }\n\n if (!context) {\n continue\n }\n\n const dropdownMenu = context._menu\n if (!toggles[i].classList.contains(CLASS_NAME_SHOW)) {\n continue\n }\n\n if (event && ((event.type === 'click' &&\n /input|textarea/i.test(event.target.tagName)) ||\n (event.type === 'keyup' && event.key === TAB_KEY)) &&\n dropdownMenu.contains(event.target)) {\n continue\n }\n\n const hideEvent = EventHandler.trigger(parent, EVENT_HIDE, relatedTarget)\n if (hideEvent.defaultPrevented) {\n continue\n }\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n [].concat(...document.body.children)\n .forEach(elem => EventHandler.off(elem, 'mouseover', null, noop()))\n }\n\n toggles[i].setAttribute('aria-expanded', 'false')\n\n if (context._popper) {\n context._popper.destroy()\n }\n\n dropdownMenu.classList.remove(CLASS_NAME_SHOW)\n toggles[i].classList.remove(CLASS_NAME_SHOW)\n EventHandler.trigger(parent, EVENT_HIDDEN, relatedTarget)\n }\n }\n\n static getParentFromElement(element) {\n return getElementFromSelector(element) || element.parentNode\n }\n\n static dataApiKeydownHandler(event) {\n // If not input/textarea:\n // - And not a key in REGEXP_KEYDOWN => not a dropdown command\n // If input/textarea:\n // - If space key => not a dropdown command\n // - If key is other than escape\n // - If key is not up or down => not a dropdown command\n // - If trigger inside the menu => not a dropdown command\n if (/input|textarea/i.test(event.target.tagName) ?\n event.key === SPACE_KEY || (event.key !== ESCAPE_KEY &&\n ((event.key !== ARROW_DOWN_KEY && event.key !== ARROW_UP_KEY) ||\n event.target.closest(SELECTOR_MENU))) :\n !REGEXP_KEYDOWN.test(event.key)) {\n return\n }\n\n event.preventDefault()\n event.stopPropagation()\n\n if (this.disabled || this.classList.contains(CLASS_NAME_DISABLED)) {\n return\n }\n\n const parent = Dropdown.getParentFromElement(this)\n const isActive = this.classList.contains(CLASS_NAME_SHOW)\n\n if (event.key === ESCAPE_KEY) {\n const button = this.matches(SELECTOR_DATA_TOGGLE) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0]\n button.focus()\n Dropdown.clearMenus()\n return\n }\n\n if (!isActive || event.key === SPACE_KEY) {\n Dropdown.clearMenus()\n return\n }\n\n const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, parent).filter(isVisible)\n\n if (!items.length) {\n return\n }\n\n let index = items.indexOf(event.target)\n\n // Up\n if (event.key === ARROW_UP_KEY && index > 0) {\n index--\n }\n\n // Down\n if (event.key === ARROW_DOWN_KEY && index < items.length - 1) {\n index++\n }\n\n // index is -1 if the first keydown is an ArrowUp\n index = index === -1 ? 0 : index\n\n items[index].focus()\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_CLICK_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n event.preventDefault()\n event.stopPropagation()\n Dropdown.dropdownInterface(this, 'toggle')\n})\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_FORM_CHILD, e => e.stopPropagation())\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Dropdown to jQuery only if jQuery is present\n */\n\nonDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Dropdown.jQueryInterface\n $.fn[NAME].Constructor = Dropdown\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Dropdown.jQueryInterface\n }\n }\n})\n\nexport default Dropdown\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n getjQuery,\n onDOMContentLoaded,\n TRANSITION_END,\n emulateTransitionEnd,\n getElementFromSelector,\n getTransitionDurationFromElement,\n isVisible,\n isRTL,\n reflow,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'modal'\nconst DATA_KEY = 'bs.modal'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst ESCAPE_KEY = 'Escape'\n\nconst Default = {\n backdrop: true,\n keyboard: true,\n focus: true\n}\n\nconst DefaultType = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n focus: 'boolean'\n}\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEUP_DISMISS = `mouseup.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SCROLLBAR_MEASURER = 'modal-scrollbar-measure'\nconst CLASS_NAME_BACKDROP = 'modal-backdrop'\nconst CLASS_NAME_OPEN = 'modal-open'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_STATIC = 'modal-static'\n\nconst SELECTOR_DIALOG = '.modal-dialog'\nconst SELECTOR_MODAL_BODY = '.modal-body'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"modal\"]'\nconst SELECTOR_DATA_DISMISS = '[data-bs-dismiss=\"modal\"]'\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Modal extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._config = this._getConfig(config)\n this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, element)\n this._backdrop = null\n this._isShown = false\n this._isBodyOverflowing = false\n this._ignoreBackdropClick = false\n this._isTransitioning = false\n this._scrollbarWidth = 0\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget)\n }\n\n show(relatedTarget) {\n if (this._isShown || this._isTransitioning) {\n return\n }\n\n if (this._element.classList.contains(CLASS_NAME_FADE)) {\n this._isTransitioning = true\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n relatedTarget\n })\n\n if (this._isShown || showEvent.defaultPrevented) {\n return\n }\n\n this._isShown = true\n\n this._checkScrollbar()\n this._setScrollbar()\n\n this._adjustDialog()\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n EventHandler.on(this._element, EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, event => this.hide(event))\n\n EventHandler.on(this._dialog, EVENT_MOUSEDOWN_DISMISS, () => {\n EventHandler.one(this._element, EVENT_MOUSEUP_DISMISS, event => {\n if (event.target === this._element) {\n this._ignoreBackdropClick = true\n }\n })\n })\n\n this._showBackdrop(() => this._showElement(relatedTarget))\n }\n\n hide(event) {\n if (event) {\n event.preventDefault()\n }\n\n if (!this._isShown || this._isTransitioning) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n this._isShown = false\n const transition = this._element.classList.contains(CLASS_NAME_FADE)\n\n if (transition) {\n this._isTransitioning = true\n }\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n EventHandler.off(document, EVENT_FOCUSIN)\n\n this._element.classList.remove(CLASS_NAME_SHOW)\n\n EventHandler.off(this._element, EVENT_CLICK_DISMISS)\n EventHandler.off(this._dialog, EVENT_MOUSEDOWN_DISMISS)\n\n if (transition) {\n const transitionDuration = getTransitionDurationFromElement(this._element)\n\n EventHandler.one(this._element, TRANSITION_END, event => this._hideModal(event))\n emulateTransitionEnd(this._element, transitionDuration)\n } else {\n this._hideModal()\n }\n }\n\n dispose() {\n [window, this._element, this._dialog]\n .forEach(htmlElement => EventHandler.off(htmlElement, EVENT_KEY))\n\n super.dispose()\n\n /**\n * `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API`\n * Do not move `document` in `htmlElements` array\n * It will remove `EVENT_CLICK_DATA_API` event that should remain\n */\n EventHandler.off(document, EVENT_FOCUSIN)\n\n this._config = null\n this._dialog = null\n this._backdrop = null\n this._isShown = null\n this._isBodyOverflowing = null\n this._ignoreBackdropClick = null\n this._isTransitioning = null\n this._scrollbarWidth = null\n }\n\n handleUpdate() {\n this._adjustDialog()\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _showElement(relatedTarget) {\n const transition = this._element.classList.contains(CLASS_NAME_FADE)\n const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog)\n\n if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n // Don't move modal's DOM position\n document.body.appendChild(this._element)\n }\n\n this._element.style.display = 'block'\n this._element.removeAttribute('aria-hidden')\n this._element.setAttribute('aria-modal', true)\n this._element.setAttribute('role', 'dialog')\n this._element.scrollTop = 0\n\n if (modalBody) {\n modalBody.scrollTop = 0\n }\n\n if (transition) {\n reflow(this._element)\n }\n\n this._element.classList.add(CLASS_NAME_SHOW)\n\n if (this._config.focus) {\n this._enforceFocus()\n }\n\n const transitionComplete = () => {\n if (this._config.focus) {\n this._element.focus()\n }\n\n this._isTransitioning = false\n EventHandler.trigger(this._element, EVENT_SHOWN, {\n relatedTarget\n })\n }\n\n if (transition) {\n const transitionDuration = getTransitionDurationFromElement(this._dialog)\n\n EventHandler.one(this._dialog, TRANSITION_END, transitionComplete)\n emulateTransitionEnd(this._dialog, transitionDuration)\n } else {\n transitionComplete()\n }\n }\n\n _enforceFocus() {\n EventHandler.off(document, EVENT_FOCUSIN) // guard against infinite focus loop\n EventHandler.on(document, EVENT_FOCUSIN, event => {\n if (document !== event.target &&\n this._element !== event.target &&\n !this._element.contains(event.target)) {\n this._element.focus()\n }\n })\n }\n\n _setEscapeEvent() {\n if (this._isShown) {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n if (this._config.keyboard && event.key === ESCAPE_KEY) {\n event.preventDefault()\n this.hide()\n } else if (!this._config.keyboard && event.key === ESCAPE_KEY) {\n this._triggerBackdropTransition()\n }\n })\n } else {\n EventHandler.off(this._element, EVENT_KEYDOWN_DISMISS)\n }\n }\n\n _setResizeEvent() {\n if (this._isShown) {\n EventHandler.on(window, EVENT_RESIZE, () => this._adjustDialog())\n } else {\n EventHandler.off(window, EVENT_RESIZE)\n }\n }\n\n _hideModal() {\n this._element.style.display = 'none'\n this._element.setAttribute('aria-hidden', true)\n this._element.removeAttribute('aria-modal')\n this._element.removeAttribute('role')\n this._isTransitioning = false\n this._showBackdrop(() => {\n document.body.classList.remove(CLASS_NAME_OPEN)\n this._resetAdjustments()\n this._resetScrollbar()\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n })\n }\n\n _removeBackdrop() {\n this._backdrop.parentNode.removeChild(this._backdrop)\n this._backdrop = null\n }\n\n _showBackdrop(callback) {\n const animate = this._element.classList.contains(CLASS_NAME_FADE) ?\n CLASS_NAME_FADE :\n ''\n\n if (this._isShown && this._config.backdrop) {\n this._backdrop = document.createElement('div')\n this._backdrop.className = CLASS_NAME_BACKDROP\n\n if (animate) {\n this._backdrop.classList.add(animate)\n }\n\n document.body.appendChild(this._backdrop)\n\n EventHandler.on(this._element, EVENT_CLICK_DISMISS, event => {\n if (this._ignoreBackdropClick) {\n this._ignoreBackdropClick = false\n return\n }\n\n if (event.target !== event.currentTarget) {\n return\n }\n\n if (this._config.backdrop === 'static') {\n this._triggerBackdropTransition()\n } else {\n this.hide()\n }\n })\n\n if (animate) {\n reflow(this._backdrop)\n }\n\n this._backdrop.classList.add(CLASS_NAME_SHOW)\n\n if (!animate) {\n callback()\n return\n }\n\n const backdropTransitionDuration = getTransitionDurationFromElement(this._backdrop)\n\n EventHandler.one(this._backdrop, TRANSITION_END, callback)\n emulateTransitionEnd(this._backdrop, backdropTransitionDuration)\n } else if (!this._isShown && this._backdrop) {\n this._backdrop.classList.remove(CLASS_NAME_SHOW)\n\n const callbackRemove = () => {\n this._removeBackdrop()\n callback()\n }\n\n if (this._element.classList.contains(CLASS_NAME_FADE)) {\n const backdropTransitionDuration = getTransitionDurationFromElement(this._backdrop)\n EventHandler.one(this._backdrop, TRANSITION_END, callbackRemove)\n emulateTransitionEnd(this._backdrop, backdropTransitionDuration)\n } else {\n callbackRemove()\n }\n } else {\n callback()\n }\n }\n\n _triggerBackdropTransition() {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n if (hideEvent.defaultPrevented) {\n return\n }\n\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n\n if (!isModalOverflowing) {\n this._element.style.overflowY = 'hidden'\n }\n\n this._element.classList.add(CLASS_NAME_STATIC)\n const modalTransitionDuration = getTransitionDurationFromElement(this._dialog)\n EventHandler.off(this._element, TRANSITION_END)\n EventHandler.one(this._element, TRANSITION_END, () => {\n this._element.classList.remove(CLASS_NAME_STATIC)\n if (!isModalOverflowing) {\n EventHandler.one(this._element, TRANSITION_END, () => {\n this._element.style.overflowY = ''\n })\n emulateTransitionEnd(this._element, modalTransitionDuration)\n }\n })\n emulateTransitionEnd(this._element, modalTransitionDuration)\n this._element.focus()\n }\n\n // ----------------------------------------------------------------------\n // the following methods are used to handle overflowing modals\n // ----------------------------------------------------------------------\n\n _adjustDialog() {\n const isModalOverflowing =\n this._element.scrollHeight > document.documentElement.clientHeight\n\n if ((!this._isBodyOverflowing && isModalOverflowing && !isRTL) || (this._isBodyOverflowing && !isModalOverflowing && isRTL)) {\n this._element.style.paddingLeft = `${this._scrollbarWidth}px`\n }\n\n if ((this._isBodyOverflowing && !isModalOverflowing && !isRTL) || (!this._isBodyOverflowing && isModalOverflowing && isRTL)) {\n this._element.style.paddingRight = `${this._scrollbarWidth}px`\n }\n }\n\n _resetAdjustments() {\n this._element.style.paddingLeft = ''\n this._element.style.paddingRight = ''\n }\n\n _checkScrollbar() {\n const rect = document.body.getBoundingClientRect()\n this._isBodyOverflowing = Math.round(rect.left + rect.right) < window.innerWidth\n this._scrollbarWidth = this._getScrollbarWidth()\n }\n\n _setScrollbar() {\n if (this._isBodyOverflowing) {\n // Note: DOMNode.style.paddingRight returns the actual value or '' if not set\n // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set\n\n // Adjust fixed content padding\n SelectorEngine.find(SELECTOR_FIXED_CONTENT)\n .forEach(element => {\n const actualPadding = element.style.paddingRight\n const calculatedPadding = window.getComputedStyle(element)['padding-right']\n Manipulator.setDataAttribute(element, 'padding-right', actualPadding)\n element.style.paddingRight = `${Number.parseFloat(calculatedPadding) + this._scrollbarWidth}px`\n })\n\n // Adjust sticky content margin\n SelectorEngine.find(SELECTOR_STICKY_CONTENT)\n .forEach(element => {\n const actualMargin = element.style.marginRight\n const calculatedMargin = window.getComputedStyle(element)['margin-right']\n Manipulator.setDataAttribute(element, 'margin-right', actualMargin)\n element.style.marginRight = `${Number.parseFloat(calculatedMargin) - this._scrollbarWidth}px`\n })\n\n // Adjust body padding\n const actualPadding = document.body.style.paddingRight\n const calculatedPadding = window.getComputedStyle(document.body)['padding-right']\n\n Manipulator.setDataAttribute(document.body, 'padding-right', actualPadding)\n document.body.style.paddingRight = `${Number.parseFloat(calculatedPadding) + this._scrollbarWidth}px`\n }\n\n document.body.classList.add(CLASS_NAME_OPEN)\n }\n\n _resetScrollbar() {\n // Restore fixed content padding\n SelectorEngine.find(SELECTOR_FIXED_CONTENT)\n .forEach(element => {\n const padding = Manipulator.getDataAttribute(element, 'padding-right')\n if (typeof padding !== 'undefined') {\n Manipulator.removeDataAttribute(element, 'padding-right')\n element.style.paddingRight = padding\n }\n })\n\n // Restore sticky content and navbar-toggler margin\n SelectorEngine.find(`${SELECTOR_STICKY_CONTENT}`)\n .forEach(element => {\n const margin = Manipulator.getDataAttribute(element, 'margin-right')\n if (typeof margin !== 'undefined') {\n Manipulator.removeDataAttribute(element, 'margin-right')\n element.style.marginRight = margin\n }\n })\n\n // Restore body padding\n const padding = Manipulator.getDataAttribute(document.body, 'padding-right')\n if (typeof padding === 'undefined') {\n document.body.style.paddingRight = ''\n } else {\n Manipulator.removeDataAttribute(document.body, 'padding-right')\n document.body.style.paddingRight = padding\n }\n }\n\n _getScrollbarWidth() { // thx d.walsh\n const scrollDiv = document.createElement('div')\n scrollDiv.className = CLASS_NAME_SCROLLBAR_MEASURER\n document.body.appendChild(scrollDiv)\n const scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth\n document.body.removeChild(scrollDiv)\n return scrollbarWidth\n }\n\n // Static\n\n static jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY)\n const _config = {\n ...Default,\n ...Manipulator.getDataAttributes(this),\n ...(typeof config === 'object' && config ? config : {})\n }\n\n if (!data) {\n data = new Modal(this, _config)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](relatedTarget)\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n const target = getElementFromSelector(this)\n\n if (this.tagName === 'A' || this.tagName === 'AREA') {\n event.preventDefault()\n }\n\n EventHandler.one(target, EVENT_SHOW, showEvent => {\n if (showEvent.defaultPrevented) {\n // only register focus restorer if modal will actually get shown\n return\n }\n\n EventHandler.one(target, EVENT_HIDDEN, () => {\n if (isVisible(this)) {\n this.focus()\n }\n })\n })\n\n let data = Data.getData(target, DATA_KEY)\n if (!data) {\n const config = {\n ...Manipulator.getDataAttributes(target),\n ...Manipulator.getDataAttributes(this)\n }\n\n data = new Modal(target, config)\n }\n\n data.show(this)\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Modal to jQuery only if jQuery is present\n */\n\nonDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Modal.jQueryInterface\n $.fn[NAME].Constructor = Modal\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Modal.jQueryInterface\n }\n }\n})\n\nexport default Modal\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst uriAttrs = new Set([\n 'background',\n 'cite',\n 'href',\n 'itemtype',\n 'longdesc',\n 'poster',\n 'src',\n 'xlink:href'\n])\n\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\n/**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/gi\n\n/**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i\n\nconst allowedAttribute = (attr, allowedAttributeList) => {\n const attrName = attr.nodeName.toLowerCase()\n\n if (allowedAttributeList.includes(attrName)) {\n if (uriAttrs.has(attrName)) {\n return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN))\n }\n\n return true\n }\n\n const regExp = allowedAttributeList.filter(attrRegex => attrRegex instanceof RegExp)\n\n // Check if a regular expression validates the attribute.\n for (let i = 0, len = regExp.length; i < len; i++) {\n if (attrName.match(regExp[i])) {\n return true\n }\n }\n\n return false\n}\n\nexport const DefaultAllowlist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n}\n\nexport function sanitizeHtml(unsafeHtml, allowList, sanitizeFn) {\n if (!unsafeHtml.length) {\n return unsafeHtml\n }\n\n if (sanitizeFn && typeof sanitizeFn === 'function') {\n return sanitizeFn(unsafeHtml)\n }\n\n const domParser = new window.DOMParser()\n const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n const allowlistKeys = Object.keys(allowList)\n const elements = [].concat(...createdDocument.body.querySelectorAll('*'))\n\n for (let i = 0, len = elements.length; i < len; i++) {\n const el = elements[i]\n const elName = el.nodeName.toLowerCase()\n\n if (!allowlistKeys.includes(elName)) {\n el.parentNode.removeChild(el)\n\n continue\n }\n\n const attributeList = [].concat(...el.attributes)\n const allowedAttributes = [].concat(allowList['*'] || [], allowList[elName] || [])\n\n attributeList.forEach(attr => {\n if (!allowedAttribute(attr, allowedAttributes)) {\n el.removeAttribute(attr.nodeName)\n }\n })\n }\n\n return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\n\nimport {\n getjQuery,\n onDOMContentLoaded,\n TRANSITION_END,\n emulateTransitionEnd,\n findShadowRoot,\n getTransitionDurationFromElement,\n getUID,\n isElement,\n isRTL,\n noop,\n typeCheckConfig\n} from './util/index'\nimport {\n DefaultAllowlist,\n sanitizeHtml\n} from './util/sanitizer'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tooltip'\nconst DATA_KEY = 'bs.tooltip'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst CLASS_PREFIX = 'bs-tooltip'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn'])\n\nconst DefaultType = {\n animation: 'boolean',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string',\n delay: '(number|object)',\n html: 'boolean',\n selector: '(string|boolean)',\n placement: '(string|function)',\n container: '(string|element|boolean)',\n fallbackPlacements: '(null|array)',\n boundary: '(string|element)',\n customClass: '(string|function)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n allowList: 'object',\n popperConfig: '(null|object)'\n}\n\nconst AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: isRTL ? 'left' : 'right',\n BOTTOM: 'bottom',\n LEFT: isRTL ? 'right' : 'left'\n}\n\nconst Default = {\n animation: true,\n template: '' +\n '' +\n '' +\n '',\n trigger: 'hover focus',\n title: '',\n delay: 0,\n html: false,\n selector: false,\n placement: 'top',\n container: false,\n fallbackPlacements: null,\n boundary: 'clippingParents',\n customClass: '',\n sanitize: true,\n sanitizeFn: null,\n allowList: DefaultAllowlist,\n popperConfig: null\n}\n\nconst Event = {\n HIDE: `hide${EVENT_KEY}`,\n HIDDEN: `hidden${EVENT_KEY}`,\n SHOW: `show${EVENT_KEY}`,\n SHOWN: `shown${EVENT_KEY}`,\n INSERTED: `inserted${EVENT_KEY}`,\n CLICK: `click${EVENT_KEY}`,\n FOCUSIN: `focusin${EVENT_KEY}`,\n FOCUSOUT: `focusout${EVENT_KEY}`,\n MOUSEENTER: `mouseenter${EVENT_KEY}`,\n MOUSELEAVE: `mouseleave${EVENT_KEY}`\n}\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_MODAL = 'modal'\nconst CLASS_NAME_SHOW = 'show'\n\nconst HOVER_STATE_SHOW = 'show'\nconst HOVER_STATE_OUT = 'out'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tooltip extends BaseComponent {\n constructor(element, config) {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)')\n }\n\n super(element)\n\n // private\n this._isEnabled = true\n this._timeout = 0\n this._hoverState = ''\n this._activeTrigger = {}\n this._popper = null\n\n // Protected\n this.config = this._getConfig(config)\n this.tip = null\n\n this._setListeners()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n static get Event() {\n return Event\n }\n\n static get EVENT_KEY() {\n return EVENT_KEY\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Public\n\n enable() {\n this._isEnabled = true\n }\n\n disable() {\n this._isEnabled = false\n }\n\n toggleEnabled() {\n this._isEnabled = !this._isEnabled\n }\n\n toggle(event) {\n if (!this._isEnabled) {\n return\n }\n\n if (event) {\n const dataKey = this.constructor.DATA_KEY\n let context = Data.getData(event.delegateTarget, dataKey)\n\n if (!context) {\n context = new this.constructor(event.delegateTarget, this._getDelegateConfig())\n Data.setData(event.delegateTarget, dataKey, context)\n }\n\n context._activeTrigger.click = !context._activeTrigger.click\n\n if (context._isWithActiveTrigger()) {\n context._enter(null, context)\n } else {\n context._leave(null, context)\n }\n } else {\n if (this.getTipElement().classList.contains(CLASS_NAME_SHOW)) {\n this._leave(null, this)\n return\n }\n\n this._enter(null, this)\n }\n }\n\n dispose() {\n clearTimeout(this._timeout)\n\n EventHandler.off(this._element, this.constructor.EVENT_KEY)\n EventHandler.off(this._element.closest(`.${CLASS_NAME_MODAL}`), 'hide.bs.modal', this._hideModalHandler)\n\n if (this.tip) {\n this.tip.parentNode.removeChild(this.tip)\n }\n\n this._isEnabled = null\n this._timeout = null\n this._hoverState = null\n this._activeTrigger = null\n if (this._popper) {\n this._popper.destroy()\n }\n\n this._popper = null\n this.config = null\n this.tip = null\n super.dispose()\n }\n\n show() {\n if (this._element.style.display === 'none') {\n throw new Error('Please use show on visible elements')\n }\n\n if (this.isWithContent() && this._isEnabled) {\n const showEvent = EventHandler.trigger(this._element, this.constructor.Event.SHOW)\n const shadowRoot = findShadowRoot(this._element)\n const isInTheDom = shadowRoot === null ?\n this._element.ownerDocument.documentElement.contains(this._element) :\n shadowRoot.contains(this._element)\n\n if (showEvent.defaultPrevented || !isInTheDom) {\n return\n }\n\n const tip = this.getTipElement()\n const tipId = getUID(this.constructor.NAME)\n\n tip.setAttribute('id', tipId)\n this._element.setAttribute('aria-describedby', tipId)\n\n this.setContent()\n\n if (this.config.animation) {\n tip.classList.add(CLASS_NAME_FADE)\n }\n\n const placement = typeof this.config.placement === 'function' ?\n this.config.placement.call(this, tip, this._element) :\n this.config.placement\n\n const attachment = this._getAttachment(placement)\n this._addAttachmentClass(attachment)\n\n const container = this._getContainer()\n Data.setData(tip, this.constructor.DATA_KEY, this)\n\n if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n container.appendChild(tip)\n }\n\n EventHandler.trigger(this._element, this.constructor.Event.INSERTED)\n\n this._popper = Popper.createPopper(this._element, tip, this._getPopperConfig(attachment))\n\n tip.classList.add(CLASS_NAME_SHOW)\n\n const customClass = typeof this.config.customClass === 'function' ? this.config.customClass() : this.config.customClass\n if (customClass) {\n tip.classList.add(...customClass.split(' '))\n }\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement) {\n [].concat(...document.body.children).forEach(element => {\n EventHandler.on(element, 'mouseover', noop())\n })\n }\n\n const complete = () => {\n const prevHoverState = this._hoverState\n\n this._hoverState = null\n EventHandler.trigger(this._element, this.constructor.Event.SHOWN)\n\n if (prevHoverState === HOVER_STATE_OUT) {\n this._leave(null, this)\n }\n }\n\n if (this.tip.classList.contains(CLASS_NAME_FADE)) {\n const transitionDuration = getTransitionDurationFromElement(this.tip)\n EventHandler.one(this.tip, TRANSITION_END, complete)\n emulateTransitionEnd(this.tip, transitionDuration)\n } else {\n complete()\n }\n }\n }\n\n hide() {\n if (!this._popper) {\n return\n }\n\n const tip = this.getTipElement()\n const complete = () => {\n if (this._hoverState !== HOVER_STATE_SHOW && tip.parentNode) {\n tip.parentNode.removeChild(tip)\n }\n\n this._cleanTipClass()\n this._element.removeAttribute('aria-describedby')\n EventHandler.trigger(this._element, this.constructor.Event.HIDDEN)\n\n if (this._popper) {\n this._popper.destroy()\n this._popper = null\n }\n }\n\n const hideEvent = EventHandler.trigger(this._element, this.constructor.Event.HIDE)\n if (hideEvent.defaultPrevented) {\n return\n }\n\n tip.classList.remove(CLASS_NAME_SHOW)\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n [].concat(...document.body.children)\n .forEach(element => EventHandler.off(element, 'mouseover', noop))\n }\n\n this._activeTrigger[TRIGGER_CLICK] = false\n this._activeTrigger[TRIGGER_FOCUS] = false\n this._activeTrigger[TRIGGER_HOVER] = false\n\n if (this.tip.classList.contains(CLASS_NAME_FADE)) {\n const transitionDuration = getTransitionDurationFromElement(tip)\n\n EventHandler.one(tip, TRANSITION_END, complete)\n emulateTransitionEnd(tip, transitionDuration)\n } else {\n complete()\n }\n\n this._hoverState = ''\n }\n\n update() {\n if (this._popper !== null) {\n this._popper.update()\n }\n }\n\n // Protected\n\n isWithContent() {\n return Boolean(this.getTitle())\n }\n\n getTipElement() {\n if (this.tip) {\n return this.tip\n }\n\n const element = document.createElement('div')\n element.innerHTML = this.config.template\n\n this.tip = element.children[0]\n return this.tip\n }\n\n setContent() {\n const tip = this.getTipElement()\n this.setElementContent(SelectorEngine.findOne(SELECTOR_TOOLTIP_INNER, tip), this.getTitle())\n tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n }\n\n setElementContent(element, content) {\n if (element === null) {\n return\n }\n\n if (typeof content === 'object' && isElement(content)) {\n if (content.jquery) {\n content = content[0]\n }\n\n // content is a DOM node or a jQuery\n if (this.config.html) {\n if (content.parentNode !== element) {\n element.innerHTML = ''\n element.appendChild(content)\n }\n } else {\n element.textContent = content.textContent\n }\n\n return\n }\n\n if (this.config.html) {\n if (this.config.sanitize) {\n content = sanitizeHtml(content, this.config.allowList, this.config.sanitizeFn)\n }\n\n element.innerHTML = content\n } else {\n element.textContent = content\n }\n }\n\n getTitle() {\n let title = this._element.getAttribute('data-bs-original-title')\n\n if (!title) {\n title = typeof this.config.title === 'function' ?\n this.config.title.call(this._element) :\n this.config.title\n }\n\n return title\n }\n\n updateAttachment(attachment) {\n if (attachment === 'right') {\n return 'end'\n }\n\n if (attachment === 'left') {\n return 'start'\n }\n\n return attachment\n }\n\n // Private\n\n _getPopperConfig(attachment) {\n const flipModifier = {\n name: 'flip',\n options: {\n altBoundary: true\n }\n }\n\n if (this.config.fallbackPlacements) {\n flipModifier.options.fallbackPlacements = this.config.fallbackPlacements\n }\n\n const defaultBsConfig = {\n placement: attachment,\n modifiers: [\n flipModifier,\n {\n name: 'preventOverflow',\n options: {\n rootBoundary: this.config.boundary\n }\n },\n {\n name: 'arrow',\n options: {\n element: `.${this.constructor.NAME}-arrow`\n }\n },\n {\n name: 'onChange',\n enabled: true,\n phase: 'afterWrite',\n fn: data => this._handlePopperPlacementChange(data)\n }\n ],\n onFirstUpdate: data => {\n if (data.options.placement !== data.placement) {\n this._handlePopperPlacementChange(data)\n }\n }\n }\n\n return {\n ...defaultBsConfig,\n ...this.config.popperConfig\n }\n }\n\n _addAttachmentClass(attachment) {\n this.getTipElement().classList.add(`${CLASS_PREFIX}-${this.updateAttachment(attachment)}`)\n }\n\n _getContainer() {\n if (this.config.container === false) {\n return document.body\n }\n\n if (isElement(this.config.container)) {\n return this.config.container\n }\n\n return SelectorEngine.findOne(this.config.container)\n }\n\n _getAttachment(placement) {\n return AttachmentMap[placement.toUpperCase()]\n }\n\n _setListeners() {\n const triggers = this.config.trigger.split(' ')\n\n triggers.forEach(trigger => {\n if (trigger === 'click') {\n EventHandler.on(this._element, this.constructor.Event.CLICK, this.config.selector, event => this.toggle(event)\n )\n } else if (trigger !== TRIGGER_MANUAL) {\n const eventIn = trigger === TRIGGER_HOVER ?\n this.constructor.Event.MOUSEENTER :\n this.constructor.Event.FOCUSIN\n const eventOut = trigger === TRIGGER_HOVER ?\n this.constructor.Event.MOUSELEAVE :\n this.constructor.Event.FOCUSOUT\n\n EventHandler.on(this._element, eventIn, this.config.selector, event => this._enter(event))\n EventHandler.on(this._element, eventOut, this.config.selector, event => this._leave(event))\n }\n })\n\n this._hideModalHandler = () => {\n if (this._element) {\n this.hide()\n }\n }\n\n EventHandler.on(this._element.closest(`.${CLASS_NAME_MODAL}`), 'hide.bs.modal', this._hideModalHandler)\n\n if (this.config.selector) {\n this.config = {\n ...this.config,\n trigger: 'manual',\n selector: ''\n }\n } else {\n this._fixTitle()\n }\n }\n\n _fixTitle() {\n const title = this._element.getAttribute('title')\n const originalTitleType = typeof this._element.getAttribute('data-bs-original-title')\n\n if (title || originalTitleType !== 'string') {\n this._element.setAttribute('data-bs-original-title', title || '')\n if (title && !this._element.getAttribute('aria-label') && !this._element.textContent) {\n this._element.setAttribute('aria-label', title)\n }\n\n this._element.setAttribute('title', '')\n }\n }\n\n _enter(event, context) {\n const dataKey = this.constructor.DATA_KEY\n context = context || Data.getData(event.delegateTarget, dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.delegateTarget,\n this._getDelegateConfig()\n )\n Data.setData(event.delegateTarget, dataKey, context)\n }\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER\n ] = true\n }\n\n if (context.getTipElement().classList.contains(CLASS_NAME_SHOW) || context._hoverState === HOVER_STATE_SHOW) {\n context._hoverState = HOVER_STATE_SHOW\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HOVER_STATE_SHOW\n\n if (!context.config.delay || !context.config.delay.show) {\n context.show()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HOVER_STATE_SHOW) {\n context.show()\n }\n }, context.config.delay.show)\n }\n\n _leave(event, context) {\n const dataKey = this.constructor.DATA_KEY\n context = context || Data.getData(event.delegateTarget, dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.delegateTarget,\n this._getDelegateConfig()\n )\n Data.setData(event.delegateTarget, dataKey, context)\n }\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER\n ] = false\n }\n\n if (context._isWithActiveTrigger()) {\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HOVER_STATE_OUT\n\n if (!context.config.delay || !context.config.delay.hide) {\n context.hide()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HOVER_STATE_OUT) {\n context.hide()\n }\n }, context.config.delay.hide)\n }\n\n _isWithActiveTrigger() {\n for (const trigger in this._activeTrigger) {\n if (this._activeTrigger[trigger]) {\n return true\n }\n }\n\n return false\n }\n\n _getConfig(config) {\n const dataAttributes = Manipulator.getDataAttributes(this._element)\n\n Object.keys(dataAttributes).forEach(dataAttr => {\n if (DISALLOWED_ATTRIBUTES.has(dataAttr)) {\n delete dataAttributes[dataAttr]\n }\n })\n\n if (config && typeof config.container === 'object' && config.container.jquery) {\n config.container = config.container[0]\n }\n\n config = {\n ...this.constructor.Default,\n ...dataAttributes,\n ...(typeof config === 'object' && config ? config : {})\n }\n\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n }\n }\n\n if (typeof config.title === 'number') {\n config.title = config.title.toString()\n }\n\n if (typeof config.content === 'number') {\n config.content = config.content.toString()\n }\n\n typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n if (config.sanitize) {\n config.template = sanitizeHtml(config.template, config.allowList, config.sanitizeFn)\n }\n\n return config\n }\n\n _getDelegateConfig() {\n const config = {}\n\n if (this.config) {\n for (const key in this.config) {\n if (this.constructor.Default[key] !== this.config[key]) {\n config[key] = this.config[key]\n }\n }\n }\n\n return config\n }\n\n _cleanTipClass() {\n const tip = this.getTipElement()\n const tabClass = tip.getAttribute('class').match(BSCLS_PREFIX_REGEX)\n if (tabClass !== null && tabClass.length > 0) {\n tabClass.map(token => token.trim())\n .forEach(tClass => tip.classList.remove(tClass))\n }\n }\n\n _handlePopperPlacementChange(popperData) {\n const { state } = popperData\n\n if (!state) {\n return\n }\n\n this.tip = state.elements.popper\n this._cleanTipClass()\n this._addAttachmentClass(this._getAttachment(state.placement))\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY)\n const _config = typeof config === 'object' && config\n\n if (!data && /dispose|hide/.test(config)) {\n return\n }\n\n if (!data) {\n data = new Tooltip(this, _config)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Tooltip to jQuery only if jQuery is present\n */\n\nonDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Tooltip.jQueryInterface\n $.fn[NAME].Constructor = Tooltip\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Tooltip.jQueryInterface\n }\n }\n})\n\nexport default Tooltip\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery, onDOMContentLoaded } from './util/index'\nimport Data from './dom/data'\nimport SelectorEngine from './dom/selector-engine'\nimport Tooltip from './tooltip'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'popover'\nconst DATA_KEY = 'bs.popover'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst CLASS_PREFIX = 'bs-popover'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\n\nconst Default = {\n ...Tooltip.Default,\n placement: 'right',\n trigger: 'click',\n content: '',\n template: '' +\n '' +\n '' +\n '' +\n ''\n}\n\nconst DefaultType = {\n ...Tooltip.DefaultType,\n content: '(string|element|function)'\n}\n\nconst Event = {\n HIDE: `hide${EVENT_KEY}`,\n HIDDEN: `hidden${EVENT_KEY}`,\n SHOW: `show${EVENT_KEY}`,\n SHOWN: `shown${EVENT_KEY}`,\n INSERTED: `inserted${EVENT_KEY}`,\n CLICK: `click${EVENT_KEY}`,\n FOCUSIN: `focusin${EVENT_KEY}`,\n FOCUSOUT: `focusout${EVENT_KEY}`,\n MOUSEENTER: `mouseenter${EVENT_KEY}`,\n MOUSELEAVE: `mouseleave${EVENT_KEY}`\n}\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Popover extends Tooltip {\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n static get Event() {\n return Event\n }\n\n static get EVENT_KEY() {\n return EVENT_KEY\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Overrides\n\n isWithContent() {\n return this.getTitle() || this._getContent()\n }\n\n setContent() {\n const tip = this.getTipElement()\n\n // we use append for html objects to maintain js events\n this.setElementContent(SelectorEngine.findOne(SELECTOR_TITLE, tip), this.getTitle())\n let content = this._getContent()\n if (typeof content === 'function') {\n content = content.call(this._element)\n }\n\n this.setElementContent(SelectorEngine.findOne(SELECTOR_CONTENT, tip), content)\n\n tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n }\n\n // Private\n\n _addAttachmentClass(attachment) {\n this.getTipElement().classList.add(`${CLASS_PREFIX}-${this.updateAttachment(attachment)}`)\n }\n\n _getContent() {\n return this._element.getAttribute('data-bs-content') || this.config.content\n }\n\n _cleanTipClass() {\n const tip = this.getTipElement()\n const tabClass = tip.getAttribute('class').match(BSCLS_PREFIX_REGEX)\n if (tabClass !== null && tabClass.length > 0) {\n tabClass.map(token => token.trim())\n .forEach(tClass => tip.classList.remove(tClass))\n }\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY)\n const _config = typeof config === 'object' ? config : null\n\n if (!data && /dispose|hide/.test(config)) {\n return\n }\n\n if (!data) {\n data = new Popover(this, _config)\n Data.setData(this, DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Popover to jQuery only if jQuery is present\n */\n\nonDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Popover.jQueryInterface\n $.fn[NAME].Constructor = Popover\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Popover.jQueryInterface\n }\n }\n})\n\nexport default Popover\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n getjQuery,\n onDOMContentLoaded,\n getSelectorFromElement,\n getUID,\n isElement,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'scrollspy'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst Default = {\n offset: 10,\n method: 'auto',\n target: ''\n}\n\nconst DefaultType = {\n offset: 'number',\n method: 'string',\n target: '(string|element)'\n}\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_SCROLL = `scroll${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_NAV_LINKS = '.nav-link'\nconst SELECTOR_NAV_ITEMS = '.nav-item'\nconst SELECTOR_LIST_ITEMS = '.list-group-item'\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\n\nconst METHOD_OFFSET = 'offset'\nconst METHOD_POSITION = 'position'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass ScrollSpy extends BaseComponent {\n constructor(element, config) {\n super(element)\n this._scrollElement = element.tagName === 'BODY' ? window : element\n this._config = this._getConfig(config)\n this._selector = `${this._config.target} ${SELECTOR_NAV_LINKS}, ${this._config.target} ${SELECTOR_LIST_ITEMS}, ${this._config.target} .${CLASS_NAME_DROPDOWN_ITEM}`\n this._offsets = []\n this._targets = []\n this._activeTarget = null\n this._scrollHeight = 0\n\n EventHandler.on(this._scrollElement, EVENT_SCROLL, event => this._process(event))\n\n this.refresh()\n this._process()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n refresh() {\n const autoMethod = this._scrollElement === this._scrollElement.window ?\n METHOD_OFFSET :\n METHOD_POSITION\n\n const offsetMethod = this._config.method === 'auto' ?\n autoMethod :\n this._config.method\n\n const offsetBase = offsetMethod === METHOD_POSITION ?\n this._getScrollTop() :\n 0\n\n this._offsets = []\n this._targets = []\n this._scrollHeight = this._getScrollHeight()\n\n const targets = SelectorEngine.find(this._selector)\n\n targets.map(element => {\n const targetSelector = getSelectorFromElement(element)\n const target = targetSelector ? SelectorEngine.findOne(targetSelector) : null\n\n if (target) {\n const targetBCR = target.getBoundingClientRect()\n if (targetBCR.width || targetBCR.height) {\n return [\n Manipulator[offsetMethod](target).top + offsetBase,\n targetSelector\n ]\n }\n }\n\n return null\n })\n .filter(item => item)\n .sort((a, b) => a[0] - b[0])\n .forEach(item => {\n this._offsets.push(item[0])\n this._targets.push(item[1])\n })\n }\n\n dispose() {\n super.dispose()\n EventHandler.off(this._scrollElement, EVENT_KEY)\n\n this._scrollElement = null\n this._config = null\n this._selector = null\n this._offsets = null\n this._targets = null\n this._activeTarget = null\n this._scrollHeight = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...(typeof config === 'object' && config ? config : {})\n }\n\n if (typeof config.target !== 'string' && isElement(config.target)) {\n let { id } = config.target\n if (!id) {\n id = getUID(NAME)\n config.target.id = id\n }\n\n config.target = `#${id}`\n }\n\n typeCheckConfig(NAME, config, DefaultType)\n\n return config\n }\n\n _getScrollTop() {\n return this._scrollElement === window ?\n this._scrollElement.pageYOffset :\n this._scrollElement.scrollTop\n }\n\n _getScrollHeight() {\n return this._scrollElement.scrollHeight || Math.max(\n document.body.scrollHeight,\n document.documentElement.scrollHeight\n )\n }\n\n _getOffsetHeight() {\n return this._scrollElement === window ?\n window.innerHeight :\n this._scrollElement.getBoundingClientRect().height\n }\n\n _process() {\n const scrollTop = this._getScrollTop() + this._config.offset\n const scrollHeight = this._getScrollHeight()\n const maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight()\n\n if (this._scrollHeight !== scrollHeight) {\n this.refresh()\n }\n\n if (scrollTop >= maxScroll) {\n const target = this._targets[this._targets.length - 1]\n\n if (this._activeTarget !== target) {\n this._activate(target)\n }\n\n return\n }\n\n if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n this._activeTarget = null\n this._clear()\n return\n }\n\n for (let i = this._offsets.length; i--;) {\n const isActiveTarget = this._activeTarget !== this._targets[i] &&\n scrollTop >= this._offsets[i] &&\n (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1])\n\n if (isActiveTarget) {\n this._activate(this._targets[i])\n }\n }\n }\n\n _activate(target) {\n this._activeTarget = target\n\n this._clear()\n\n const queries = this._selector.split(',')\n .map(selector => `${selector}[data-bs-target=\"${target}\"],${selector}[href=\"${target}\"]`)\n\n const link = SelectorEngine.findOne(queries.join(','))\n\n if (link.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE, link.closest(SELECTOR_DROPDOWN))\n .classList.add(CLASS_NAME_ACTIVE)\n\n link.classList.add(CLASS_NAME_ACTIVE)\n } else {\n // Set triggered link as active\n link.classList.add(CLASS_NAME_ACTIVE)\n\n SelectorEngine.parents(link, SELECTOR_NAV_LIST_GROUP)\n .forEach(listGroup => {\n // Set triggered links parents as active\n // With both and markup a parent is the previous sibling of any nav ancestor\n SelectorEngine.prev(listGroup, `${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`)\n .forEach(item => item.classList.add(CLASS_NAME_ACTIVE))\n\n // Handle special case when .nav-link is inside .nav-item\n SelectorEngine.prev(listGroup, SELECTOR_NAV_ITEMS)\n .forEach(navItem => {\n SelectorEngine.children(navItem, SELECTOR_NAV_LINKS)\n .forEach(item => item.classList.add(CLASS_NAME_ACTIVE))\n })\n })\n }\n\n EventHandler.trigger(this._scrollElement, EVENT_ACTIVATE, {\n relatedTarget: target\n })\n }\n\n _clear() {\n SelectorEngine.find(this._selector)\n .filter(node => node.classList.contains(CLASS_NAME_ACTIVE))\n .forEach(node => node.classList.remove(CLASS_NAME_ACTIVE))\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY)\n const _config = typeof config === 'object' && config\n\n if (!data) {\n data = new ScrollSpy(this, _config)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n SelectorEngine.find(SELECTOR_DATA_SPY)\n .forEach(spy => new ScrollSpy(spy, Manipulator.getDataAttributes(spy)))\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .ScrollSpy to jQuery only if jQuery is present\n */\n\nonDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = ScrollSpy.jQueryInterface\n $.fn[NAME].Constructor = ScrollSpy\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return ScrollSpy.jQueryInterface\n }\n }\n})\n\nexport default ScrollSpy\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n getjQuery,\n onDOMContentLoaded,\n TRANSITION_END,\n emulateTransitionEnd,\n getElementFromSelector,\n getTransitionDurationFromElement,\n reflow\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tab'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_DISABLED = 'disabled'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ACTIVE_UL = ':scope > li > .active'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\nconst SELECTOR_DROPDOWN_ACTIVE_CHILD = ':scope > .dropdown-menu .active'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tab extends BaseComponent {\n // Getters\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n show() {\n if ((this._element.parentNode &&\n this._element.parentNode.nodeType === Node.ELEMENT_NODE &&\n this._element.classList.contains(CLASS_NAME_ACTIVE)) ||\n this._element.classList.contains(CLASS_NAME_DISABLED)) {\n return\n }\n\n let previous\n const target = getElementFromSelector(this._element)\n const listElement = this._element.closest(SELECTOR_NAV_LIST_GROUP)\n\n if (listElement) {\n const itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE\n previous = SelectorEngine.find(itemSelector, listElement)\n previous = previous[previous.length - 1]\n }\n\n let hideEvent = null\n\n if (previous) {\n hideEvent = EventHandler.trigger(previous, EVENT_HIDE, {\n relatedTarget: this._element\n })\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n relatedTarget: previous\n })\n\n if (showEvent.defaultPrevented || (hideEvent !== null && hideEvent.defaultPrevented)) {\n return\n }\n\n this._activate(this._element, listElement)\n\n const complete = () => {\n EventHandler.trigger(previous, EVENT_HIDDEN, {\n relatedTarget: this._element\n })\n EventHandler.trigger(this._element, EVENT_SHOWN, {\n relatedTarget: previous\n })\n }\n\n if (target) {\n this._activate(target, target.parentNode, complete)\n } else {\n complete()\n }\n }\n\n // Private\n\n _activate(element, container, callback) {\n const activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ?\n SelectorEngine.find(SELECTOR_ACTIVE_UL, container) :\n SelectorEngine.children(container, SELECTOR_ACTIVE)\n\n const active = activeElements[0]\n const isTransitioning = callback && (active && active.classList.contains(CLASS_NAME_FADE))\n\n const complete = () => this._transitionComplete(element, active, callback)\n\n if (active && isTransitioning) {\n const transitionDuration = getTransitionDurationFromElement(active)\n active.classList.remove(CLASS_NAME_SHOW)\n\n EventHandler.one(active, TRANSITION_END, complete)\n emulateTransitionEnd(active, transitionDuration)\n } else {\n complete()\n }\n }\n\n _transitionComplete(element, active, callback) {\n if (active) {\n active.classList.remove(CLASS_NAME_ACTIVE)\n\n const dropdownChild = SelectorEngine.findOne(SELECTOR_DROPDOWN_ACTIVE_CHILD, active.parentNode)\n\n if (dropdownChild) {\n dropdownChild.classList.remove(CLASS_NAME_ACTIVE)\n }\n\n if (active.getAttribute('role') === 'tab') {\n active.setAttribute('aria-selected', false)\n }\n }\n\n element.classList.add(CLASS_NAME_ACTIVE)\n if (element.getAttribute('role') === 'tab') {\n element.setAttribute('aria-selected', true)\n }\n\n reflow(element)\n\n if (element.classList.contains(CLASS_NAME_FADE)) {\n element.classList.add(CLASS_NAME_SHOW)\n }\n\n if (element.parentNode && element.parentNode.classList.contains(CLASS_NAME_DROPDOWN_MENU)) {\n const dropdownElement = element.closest(SELECTOR_DROPDOWN)\n\n if (dropdownElement) {\n SelectorEngine.find(SELECTOR_DROPDOWN_TOGGLE)\n .forEach(dropdown => dropdown.classList.add(CLASS_NAME_ACTIVE))\n }\n\n element.setAttribute('aria-expanded', true)\n }\n\n if (callback) {\n callback()\n }\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Data.getData(this, DATA_KEY) || new Tab(this)\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n event.preventDefault()\n\n const data = Data.getData(this, DATA_KEY) || new Tab(this)\n data.show()\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Tab to jQuery only if jQuery is present\n */\n\nonDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Tab.jQueryInterface\n $.fn[NAME].Constructor = Tab\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Tab.jQueryInterface\n }\n }\n})\n\nexport default Tab\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n getjQuery,\n onDOMContentLoaded,\n TRANSITION_END,\n emulateTransitionEnd,\n getTransitionDurationFromElement,\n reflow,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'toast'\nconst DATA_KEY = 'bs.toast'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_HIDE = 'hide'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\n\nconst DefaultType = {\n animation: 'boolean',\n autohide: 'boolean',\n delay: 'number'\n}\n\nconst Default = {\n animation: true,\n autohide: true,\n delay: 5000\n}\n\nconst SELECTOR_DATA_DISMISS = '[data-bs-dismiss=\"toast\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Toast extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._config = this._getConfig(config)\n this._timeout = null\n this._setListeners()\n }\n\n // Getters\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get Default() {\n return Default\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n show() {\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n this._clearTimeout()\n\n if (this._config.animation) {\n this._element.classList.add(CLASS_NAME_FADE)\n }\n\n const complete = () => {\n this._element.classList.remove(CLASS_NAME_SHOWING)\n this._element.classList.add(CLASS_NAME_SHOW)\n\n EventHandler.trigger(this._element, EVENT_SHOWN)\n\n if (this._config.autohide) {\n this._timeout = setTimeout(() => {\n this.hide()\n }, this._config.delay)\n }\n }\n\n this._element.classList.remove(CLASS_NAME_HIDE)\n reflow(this._element)\n this._element.classList.add(CLASS_NAME_SHOWING)\n if (this._config.animation) {\n const transitionDuration = getTransitionDurationFromElement(this._element)\n\n EventHandler.one(this._element, TRANSITION_END, complete)\n emulateTransitionEnd(this._element, transitionDuration)\n } else {\n complete()\n }\n }\n\n hide() {\n if (!this._element.classList.contains(CLASS_NAME_SHOW)) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n const complete = () => {\n this._element.classList.add(CLASS_NAME_HIDE)\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n this._element.classList.remove(CLASS_NAME_SHOW)\n if (this._config.animation) {\n const transitionDuration = getTransitionDurationFromElement(this._element)\n\n EventHandler.one(this._element, TRANSITION_END, complete)\n emulateTransitionEnd(this._element, transitionDuration)\n } else {\n complete()\n }\n }\n\n dispose() {\n this._clearTimeout()\n\n if (this._element.classList.contains(CLASS_NAME_SHOW)) {\n this._element.classList.remove(CLASS_NAME_SHOW)\n }\n\n EventHandler.off(this._element, EVENT_CLICK_DISMISS)\n\n super.dispose()\n this._config = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...(typeof config === 'object' && config ? config : {})\n }\n\n typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n return config\n }\n\n _setListeners() {\n EventHandler.on(this._element, EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, () => this.hide())\n }\n\n _clearTimeout() {\n clearTimeout(this._timeout)\n this._timeout = null\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY)\n const _config = typeof config === 'object' && config\n\n if (!data) {\n data = new Toast(this, _config)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](this)\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Toast to jQuery only if jQuery is present\n */\n\nonDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Toast.jQueryInterface\n $.fn[NAME].Constructor = Toast\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Toast.jQueryInterface\n }\n }\n})\n\nexport default Toast\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): index.umd.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Alert from './src/alert'\nimport Button from './src/button'\nimport Carousel from './src/carousel'\nimport Collapse from './src/collapse'\nimport Dropdown from './src/dropdown'\nimport Modal from './src/modal'\nimport Popover from './src/popover'\nimport ScrollSpy from './src/scrollspy'\nimport Tab from './src/tab'\nimport Toast from './src/toast'\nimport Tooltip from './src/tooltip'\n\nexport default {\n Alert,\n Button,\n Carousel,\n Collapse,\n Dropdown,\n Modal,\n Popover,\n ScrollSpy,\n Tab,\n Toast,\n Tooltip\n}\n"]} \ No newline at end of file diff --git a/dist/js/bootstrap.esm.js b/dist/js/bootstrap.esm.js deleted file mode 100644 index 47bf19169..000000000 --- a/dist/js/bootstrap.esm.js +++ /dev/null @@ -1,4961 +0,0 @@ -/*! - * Bootstrap v5.0.0-beta1 (https://getbootstrap.com/) - * Copyright 2011-2020 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */ -import * as Popper from '@popperjs/core'; -import { createPopper } from '@popperjs/core'; - -function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } -} - -function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; -} - -function _extends() { - _extends = Object.assign || function (target) { - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i]; - - for (var key in source) { - if (Object.prototype.hasOwnProperty.call(source, key)) { - target[key] = source[key]; - } - } - } - - return target; - }; - - return _extends.apply(this, arguments); -} - -function _inheritsLoose(subClass, superClass) { - subClass.prototype = Object.create(superClass.prototype); - subClass.prototype.constructor = subClass; - subClass.__proto__ = superClass; -} - -/** - * -------------------------------------------------------------------------- - * Bootstrap (v5.0.0-beta1): util/index.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ -var MAX_UID = 1000000; -var MILLISECONDS_MULTIPLIER = 1000; -var TRANSITION_END = 'transitionend'; // Shoutout AngusCroll (https://goo.gl/pxwQGp) - -var toType = function toType(obj) { - if (obj === null || obj === undefined) { - return "" + obj; - } - - return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase(); -}; -/** - * -------------------------------------------------------------------------- - * Public Util Api - * -------------------------------------------------------------------------- - */ - - -var getUID = function getUID(prefix) { - do { - prefix += Math.floor(Math.random() * MAX_UID); - } while (document.getElementById(prefix)); - - return prefix; -}; - -var getSelector = function getSelector(element) { - var selector = element.getAttribute('data-bs-target'); - - if (!selector || selector === '#') { - var hrefAttr = element.getAttribute('href'); - selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null; - } - - return selector; -}; - -var getSelectorFromElement = function getSelectorFromElement(element) { - var selector = getSelector(element); - - if (selector) { - return document.querySelector(selector) ? selector : null; - } - - return null; -}; - -var getElementFromSelector = function getElementFromSelector(element) { - var selector = getSelector(element); - return selector ? document.querySelector(selector) : null; -}; - -var getTransitionDurationFromElement = function getTransitionDurationFromElement(element) { - if (!element) { - return 0; - } // Get transition-duration of the element - - - var _window$getComputedSt = window.getComputedStyle(element), - transitionDuration = _window$getComputedSt.transitionDuration, - transitionDelay = _window$getComputedSt.transitionDelay; - - var floatTransitionDuration = Number.parseFloat(transitionDuration); - var floatTransitionDelay = Number.parseFloat(transitionDelay); // Return 0 if element or transition duration is not found - - if (!floatTransitionDuration && !floatTransitionDelay) { - return 0; - } // If multiple durations are defined, take the first - - - transitionDuration = transitionDuration.split(',')[0]; - transitionDelay = transitionDelay.split(',')[0]; - return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER; -}; - -var triggerTransitionEnd = function triggerTransitionEnd(element) { - element.dispatchEvent(new Event(TRANSITION_END)); -}; - -var isElement = function isElement(obj) { - return (obj[0] || obj).nodeType; -}; - -var emulateTransitionEnd = function emulateTransitionEnd(element, duration) { - var called = false; - var durationPadding = 5; - var emulatedDuration = duration + durationPadding; - - function listener() { - called = true; - element.removeEventListener(TRANSITION_END, listener); - } - - element.addEventListener(TRANSITION_END, listener); - setTimeout(function () { - if (!called) { - triggerTransitionEnd(element); - } - }, emulatedDuration); -}; - -var typeCheckConfig = function typeCheckConfig(componentName, config, configTypes) { - Object.keys(configTypes).forEach(function (property) { - var expectedTypes = configTypes[property]; - var value = config[property]; - var valueType = value && isElement(value) ? 'element' : toType(value); - - if (!new RegExp(expectedTypes).test(valueType)) { - throw new Error(componentName.toUpperCase() + ": " + ("Option \"" + property + "\" provided type \"" + valueType + "\" ") + ("but expected type \"" + expectedTypes + "\".")); - } - }); -}; - -var isVisible = function isVisible(element) { - if (!element) { - return false; - } - - if (element.style && element.parentNode && element.parentNode.style) { - var elementStyle = getComputedStyle(element); - var parentNodeStyle = getComputedStyle(element.parentNode); - return elementStyle.display !== 'none' && parentNodeStyle.display !== 'none' && elementStyle.visibility !== 'hidden'; - } - - return false; -}; - -var findShadowRoot = function findShadowRoot(element) { - if (!document.documentElement.attachShadow) { - return null; - } // Can find the shadow root otherwise it'll return the document - - - if (typeof element.getRootNode === 'function') { - var root = element.getRootNode(); - return root instanceof ShadowRoot ? root : null; - } - - if (element instanceof ShadowRoot) { - return element; - } // when we don't find a shadow root - - - if (!element.parentNode) { - return null; - } - - return findShadowRoot(element.parentNode); -}; - -var noop = function noop() { - return function () {}; -}; - -var reflow = function reflow(element) { - return element.offsetHeight; -}; - -var getjQuery = function getjQuery() { - var _window = window, - jQuery = _window.jQuery; - - if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) { - return jQuery; - } - - return null; -}; - -var onDOMContentLoaded = function onDOMContentLoaded(callback) { - if (document.readyState === 'loading') { - document.addEventListener('DOMContentLoaded', callback); - } else { - callback(); - } -}; - -var isRTL = document.documentElement.dir === 'rtl'; - -/** - * -------------------------------------------------------------------------- - * Bootstrap (v5.0.0-beta1): dom/data.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ - -/** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ -var mapData = function () { - var storeData = {}; - var id = 1; - return { - set: function set(element, key, data) { - if (typeof element.bsKey === 'undefined') { - element.bsKey = { - key: key, - id: id - }; - id++; - } - - storeData[element.bsKey.id] = data; - }, - get: function get(element, key) { - if (!element || typeof element.bsKey === 'undefined') { - return null; - } - - var keyProperties = element.bsKey; - - if (keyProperties.key === key) { - return storeData[keyProperties.id]; - } - - return null; - }, - delete: function _delete(element, key) { - if (typeof element.bsKey === 'undefined') { - return; - } - - var keyProperties = element.bsKey; - - if (keyProperties.key === key) { - delete storeData[keyProperties.id]; - delete element.bsKey; - } - } - }; -}(); - -var Data = { - setData: function setData(instance, key, data) { - mapData.set(instance, key, data); - }, - getData: function getData(instance, key) { - return mapData.get(instance, key); - }, - removeData: function removeData(instance, key) { - mapData.delete(instance, key); - } -}; - -/** - * -------------------------------------------------------------------------- - * Bootstrap (v5.0.0-beta1): dom/event-handler.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ -/** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - -var namespaceRegex = /[^.]*(?=\..*)\.|.*/; -var stripNameRegex = /\..*/; -var stripUidRegex = /::\d+$/; -var eventRegistry = {}; // Events storage - -var uidEvent = 1; -var customEvents = { - mouseenter: 'mouseover', - mouseleave: 'mouseout' -}; -var nativeEvents = new Set(['click', 'dblclick', 'mouseup', 'mousedown', 'contextmenu', 'mousewheel', 'DOMMouseScroll', 'mouseover', 'mouseout', 'mousemove', 'selectstart', 'selectend', 'keydown', 'keypress', 'keyup', 'orientationchange', 'touchstart', 'touchmove', 'touchend', 'touchcancel', 'pointerdown', 'pointermove', 'pointerup', 'pointerleave', 'pointercancel', 'gesturestart', 'gesturechange', 'gestureend', 'focus', 'blur', 'change', 'reset', 'select', 'submit', 'focusin', 'focusout', 'load', 'unload', 'beforeunload', 'resize', 'move', 'DOMContentLoaded', 'readystatechange', 'error', 'abort', 'scroll']); -/** - * ------------------------------------------------------------------------ - * Private methods - * ------------------------------------------------------------------------ - */ - -function getUidEvent(element, uid) { - return uid && uid + "::" + uidEvent++ || element.uidEvent || uidEvent++; -} - -function getEvent(element) { - var uid = getUidEvent(element); - element.uidEvent = uid; - eventRegistry[uid] = eventRegistry[uid] || {}; - return eventRegistry[uid]; -} - -function bootstrapHandler(element, fn) { - return function handler(event) { - 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) { - var domElements = element.querySelectorAll(selector); - - for (var target = event.target; target && target !== this; target = target.parentNode) { - for (var i = domElements.length; i--;) { - if (domElements[i] === target) { - event.delegateTarget = target; - - if (handler.oneOff) { - EventHandler.off(element, event.type, fn); - } - - return fn.apply(target, [event]); - } - } - } // To please ESLint - - - return null; - }; -} - -function findHandler(events, handler, delegationSelector) { - if (delegationSelector === void 0) { - delegationSelector = null; - } - - var uidEventList = Object.keys(events); - - for (var i = 0, len = uidEventList.length; i < len; i++) { - var event = events[uidEventList[i]]; - - if (event.originalHandler === handler && event.delegationSelector === delegationSelector) { - return event; - } - } - - return null; -} - -function normalizeParams(originalTypeEvent, handler, delegationFn) { - var delegation = typeof handler === 'string'; - var originalHandler = delegation ? delegationFn : handler; // allow to get the native events from namespaced events ('click.bs.button' --> 'click') - - var typeEvent = originalTypeEvent.replace(stripNameRegex, ''); - var custom = customEvents[typeEvent]; - - if (custom) { - typeEvent = custom; - } - - var isNative = nativeEvents.has(typeEvent); - - if (!isNative) { - typeEvent = originalTypeEvent; - } - - return [delegation, originalHandler, typeEvent]; -} - -function addHandler(element, originalTypeEvent, handler, delegationFn, oneOff) { - if (typeof originalTypeEvent !== 'string' || !element) { - return; - } - - if (!handler) { - handler = delegationFn; - delegationFn = null; - } - - var _normalizeParams = normalizeParams(originalTypeEvent, handler, delegationFn), - delegation = _normalizeParams[0], - originalHandler = _normalizeParams[1], - typeEvent = _normalizeParams[2]; - - var events = getEvent(element); - var handlers = events[typeEvent] || (events[typeEvent] = {}); - var previousFn = findHandler(handlers, originalHandler, delegation ? handler : null); - - if (previousFn) { - previousFn.oneOff = previousFn.oneOff && oneOff; - return; - } - - var uid = getUidEvent(originalHandler, originalTypeEvent.replace(namespaceRegex, '')); - var fn = delegation ? bootstrapDelegationHandler(element, handler, delegationFn) : bootstrapHandler(element, handler); - fn.delegationSelector = delegation ? handler : null; - fn.originalHandler = originalHandler; - fn.oneOff = oneOff; - fn.uidEvent = uid; - handlers[uid] = fn; - element.addEventListener(typeEvent, fn, delegation); -} - -function removeHandler(element, events, typeEvent, handler, delegationSelector) { - var 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) { - var storeElementEvent = events[typeEvent] || {}; - Object.keys(storeElementEvent).forEach(function (handlerKey) { - if (handlerKey.includes(namespace)) { - var event = storeElementEvent[handlerKey]; - removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector); - } - }); -} - -var EventHandler = { - on: function on(element, event, handler, delegationFn) { - addHandler(element, event, handler, delegationFn, false); - }, - one: function one(element, event, handler, delegationFn) { - addHandler(element, event, handler, delegationFn, true); - }, - off: function off(element, originalTypeEvent, handler, delegationFn) { - if (typeof originalTypeEvent !== 'string' || !element) { - return; - } - - var _normalizeParams2 = normalizeParams(originalTypeEvent, handler, delegationFn), - delegation = _normalizeParams2[0], - originalHandler = _normalizeParams2[1], - typeEvent = _normalizeParams2[2]; - - var inNamespace = typeEvent !== originalTypeEvent; - var events = getEvent(element); - var isNamespace = originalTypeEvent.startsWith('.'); - - if (typeof originalHandler !== 'undefined') { - // Simplest case: handler is passed, remove that listener ONLY. - if (!events || !events[typeEvent]) { - return; - } - - removeHandler(element, events, typeEvent, originalHandler, delegation ? handler : null); - return; - } - - if (isNamespace) { - Object.keys(events).forEach(function (elementEvent) { - removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1)); - }); - } - - var storeElementEvent = events[typeEvent] || {}; - Object.keys(storeElementEvent).forEach(function (keyHandlers) { - var handlerKey = keyHandlers.replace(stripUidRegex, ''); - - if (!inNamespace || originalTypeEvent.includes(handlerKey)) { - var event = storeElementEvent[keyHandlers]; - removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector); - } - }); - }, - trigger: function trigger(element, event, args) { - if (typeof event !== 'string' || !element) { - return null; - } - - var $ = getjQuery(); - var typeEvent = event.replace(stripNameRegex, ''); - var inNamespace = event !== typeEvent; - var isNative = nativeEvents.has(typeEvent); - var jQueryEvent; - var bubbles = true; - var nativeDispatch = true; - var defaultPrevented = false; - var evt = null; - - if (inNamespace && $) { - jQueryEvent = $.Event(event, args); - $(element).trigger(jQueryEvent); - bubbles = !jQueryEvent.isPropagationStopped(); - nativeDispatch = !jQueryEvent.isImmediatePropagationStopped(); - defaultPrevented = jQueryEvent.isDefaultPrevented(); - } - - if (isNative) { - evt = document.createEvent('HTMLEvents'); - evt.initEvent(typeEvent, bubbles, true); - } else { - evt = new CustomEvent(event, { - bubbles: bubbles, - cancelable: true - }); - } // merge custom information in our event - - - if (typeof args !== 'undefined') { - Object.keys(args).forEach(function (key) { - Object.defineProperty(evt, key, { - get: function get() { - return args[key]; - } - }); - }); - } - - if (defaultPrevented) { - evt.preventDefault(); - } - - if (nativeDispatch) { - element.dispatchEvent(evt); - } - - if (evt.defaultPrevented && typeof jQueryEvent !== 'undefined') { - jQueryEvent.preventDefault(); - } - - return evt; - } -}; - -/** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - -var VERSION = '5.0.0-beta1'; - -var BaseComponent = /*#__PURE__*/function () { - function BaseComponent(element) { - if (!element) { - return; - } - - this._element = element; - Data.setData(element, this.constructor.DATA_KEY, this); - } - - var _proto = BaseComponent.prototype; - - _proto.dispose = function dispose() { - Data.removeData(this._element, this.constructor.DATA_KEY); - this._element = null; - } - /** Static */ - ; - - BaseComponent.getInstance = function getInstance(element) { - return Data.getData(element, this.DATA_KEY); - }; - - _createClass(BaseComponent, null, [{ - key: "VERSION", - get: function get() { - return VERSION; - } - }]); - - return BaseComponent; -}(); - -/** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - -var NAME = 'alert'; -var DATA_KEY = 'bs.alert'; -var EVENT_KEY = "." + DATA_KEY; -var DATA_API_KEY = '.data-api'; -var SELECTOR_DISMISS = '[data-bs-dismiss="alert"]'; -var EVENT_CLOSE = "close" + EVENT_KEY; -var EVENT_CLOSED = "closed" + EVENT_KEY; -var EVENT_CLICK_DATA_API = "click" + EVENT_KEY + DATA_API_KEY; -var CLASSNAME_ALERT = 'alert'; -var CLASSNAME_FADE = 'fade'; -var CLASSNAME_SHOW = 'show'; -/** - * ------------------------------------------------------------------------ - * Class Definition - * ------------------------------------------------------------------------ - */ - -var Alert = /*#__PURE__*/function (_BaseComponent) { - _inheritsLoose(Alert, _BaseComponent); - - function Alert() { - return _BaseComponent.apply(this, arguments) || this; - } - - var _proto = Alert.prototype; - - // Public - _proto.close = function close(element) { - var rootElement = element ? this._getRootElement(element) : this._element; - - var customEvent = this._triggerCloseEvent(rootElement); - - if (customEvent === null || customEvent.defaultPrevented) { - return; - } - - this._removeElement(rootElement); - } // Private - ; - - _proto._getRootElement = function _getRootElement(element) { - return getElementFromSelector(element) || element.closest("." + CLASSNAME_ALERT); - }; - - _proto._triggerCloseEvent = function _triggerCloseEvent(element) { - return EventHandler.trigger(element, EVENT_CLOSE); - }; - - _proto._removeElement = function _removeElement(element) { - var _this = this; - - element.classList.remove(CLASSNAME_SHOW); - - if (!element.classList.contains(CLASSNAME_FADE)) { - this._destroyElement(element); - - return; - } - - var transitionDuration = getTransitionDurationFromElement(element); - EventHandler.one(element, TRANSITION_END, function () { - return _this._destroyElement(element); - }); - emulateTransitionEnd(element, transitionDuration); - }; - - _proto._destroyElement = function _destroyElement(element) { - if (element.parentNode) { - element.parentNode.removeChild(element); - } - - EventHandler.trigger(element, EVENT_CLOSED); - } // Static - ; - - Alert.jQueryInterface = function jQueryInterface(config) { - return this.each(function () { - var data = Data.getData(this, DATA_KEY); - - if (!data) { - data = new Alert(this); - } - - if (config === 'close') { - data[config](this); - } - }); - }; - - Alert.handleDismiss = function handleDismiss(alertInstance) { - return function (event) { - if (event) { - event.preventDefault(); - } - - alertInstance.close(this); - }; - }; - - _createClass(Alert, null, [{ - key: "DATA_KEY", - // Getters - get: function get() { - return DATA_KEY; - } - }]); - - return Alert; -}(BaseComponent); -/** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ - - -EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DISMISS, Alert.handleDismiss(new Alert())); -/** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - * add .Alert to jQuery only if jQuery is present - */ - -onDOMContentLoaded(function () { - var $ = getjQuery(); - /* istanbul ignore if */ - - if ($) { - var JQUERY_NO_CONFLICT = $.fn[NAME]; - $.fn[NAME] = Alert.jQueryInterface; - $.fn[NAME].Constructor = Alert; - - $.fn[NAME].noConflict = function () { - $.fn[NAME] = JQUERY_NO_CONFLICT; - return Alert.jQueryInterface; - }; - } -}); - -/** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - -var NAME$1 = 'button'; -var DATA_KEY$1 = 'bs.button'; -var EVENT_KEY$1 = "." + DATA_KEY$1; -var DATA_API_KEY$1 = '.data-api'; -var CLASS_NAME_ACTIVE = 'active'; -var SELECTOR_DATA_TOGGLE = '[data-bs-toggle="button"]'; -var EVENT_CLICK_DATA_API$1 = "click" + EVENT_KEY$1 + DATA_API_KEY$1; -/** - * ------------------------------------------------------------------------ - * Class Definition - * ------------------------------------------------------------------------ - */ - -var Button = /*#__PURE__*/function (_BaseComponent) { - _inheritsLoose(Button, _BaseComponent); - - function Button() { - return _BaseComponent.apply(this, arguments) || this; - } - - var _proto = Button.prototype; - - // Public - _proto.toggle = function toggle() { - // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method - this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE)); - } // Static - ; - - Button.jQueryInterface = function jQueryInterface(config) { - return this.each(function () { - var data = Data.getData(this, DATA_KEY$1); - - if (!data) { - data = new Button(this); - } - - if (config === 'toggle') { - data[config](); - } - }); - }; - - _createClass(Button, null, [{ - key: "DATA_KEY", - // Getters - get: function get() { - return DATA_KEY$1; - } - }]); - - return Button; -}(BaseComponent); -/** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ - - -EventHandler.on(document, EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE, function (event) { - event.preventDefault(); - var button = event.target.closest(SELECTOR_DATA_TOGGLE); - var data = Data.getData(button, DATA_KEY$1); - - if (!data) { - data = new Button(button); - } - - data.toggle(); -}); -/** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - * add .Button to jQuery only if jQuery is present - */ - -onDOMContentLoaded(function () { - var $ = getjQuery(); - /* istanbul ignore if */ - - if ($) { - var JQUERY_NO_CONFLICT = $.fn[NAME$1]; - $.fn[NAME$1] = Button.jQueryInterface; - $.fn[NAME$1].Constructor = Button; - - $.fn[NAME$1].noConflict = function () { - $.fn[NAME$1] = JQUERY_NO_CONFLICT; - return Button.jQueryInterface; - }; - } -}); - -/** - * -------------------------------------------------------------------------- - * Bootstrap (v5.0.0-beta1): dom/manipulator.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ -function normalizeData(val) { - if (val === 'true') { - return true; - } - - if (val === 'false') { - return false; - } - - if (val === Number(val).toString()) { - return Number(val); - } - - if (val === '' || val === 'null') { - return null; - } - - return val; -} - -function normalizeDataKey(key) { - return key.replace(/[A-Z]/g, function (chr) { - return "-" + chr.toLowerCase(); - }); -} - -var Manipulator = { - setDataAttribute: function setDataAttribute(element, key, value) { - element.setAttribute("data-bs-" + normalizeDataKey(key), value); - }, - removeDataAttribute: function removeDataAttribute(element, key) { - element.removeAttribute("data-bs-" + normalizeDataKey(key)); - }, - getDataAttributes: function getDataAttributes(element) { - if (!element) { - return {}; - } - - var attributes = {}; - Object.keys(element.dataset).filter(function (key) { - return key.startsWith('bs'); - }).forEach(function (key) { - var pureKey = key.replace(/^bs/, ''); - pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length); - attributes[pureKey] = normalizeData(element.dataset[key]); - }); - return attributes; - }, - getDataAttribute: function getDataAttribute(element, key) { - return normalizeData(element.getAttribute("data-bs-" + normalizeDataKey(key))); - }, - offset: function offset(element) { - var rect = element.getBoundingClientRect(); - return { - top: rect.top + document.body.scrollTop, - left: rect.left + document.body.scrollLeft - }; - }, - position: function position(element) { - return { - top: element.offsetTop, - left: element.offsetLeft - }; - } -}; - -/** - * -------------------------------------------------------------------------- - * Bootstrap (v5.0.0-beta1): dom/selector-engine.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ - -/** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ -var NODE_TEXT = 3; -var SelectorEngine = { - matches: function matches(element, selector) { - return element.matches(selector); - }, - find: function find(selector, element) { - var _ref; - - if (element === void 0) { - element = document.documentElement; - } - - return (_ref = []).concat.apply(_ref, Element.prototype.querySelectorAll.call(element, selector)); - }, - findOne: function findOne(selector, element) { - if (element === void 0) { - element = document.documentElement; - } - - return Element.prototype.querySelector.call(element, selector); - }, - children: function children(element, selector) { - var _ref2; - - var children = (_ref2 = []).concat.apply(_ref2, element.children); - - return children.filter(function (child) { - return child.matches(selector); - }); - }, - parents: function parents(element, selector) { - var parents = []; - var ancestor = element.parentNode; - - while (ancestor && ancestor.nodeType === Node.ELEMENT_NODE && ancestor.nodeType !== NODE_TEXT) { - if (this.matches(ancestor, selector)) { - parents.push(ancestor); - } - - ancestor = ancestor.parentNode; - } - - return parents; - }, - prev: function prev(element, selector) { - var previous = element.previousElementSibling; - - while (previous) { - if (previous.matches(selector)) { - return [previous]; - } - - previous = previous.previousElementSibling; - } - - return []; - }, - next: function next(element, selector) { - var next = element.nextElementSibling; - - while (next) { - if (this.matches(next, selector)) { - return [next]; - } - - next = next.nextElementSibling; - } - - return []; - } -}; - -/** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - -var NAME$2 = 'carousel'; -var DATA_KEY$2 = 'bs.carousel'; -var EVENT_KEY$2 = "." + DATA_KEY$2; -var DATA_API_KEY$2 = '.data-api'; -var ARROW_LEFT_KEY = 'ArrowLeft'; -var ARROW_RIGHT_KEY = 'ArrowRight'; -var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch - -var SWIPE_THRESHOLD = 40; -var Default = { - interval: 5000, - keyboard: true, - slide: false, - pause: 'hover', - wrap: true, - touch: true -}; -var DefaultType = { - interval: '(number|boolean)', - keyboard: 'boolean', - slide: '(boolean|string)', - pause: '(string|boolean)', - wrap: 'boolean', - touch: 'boolean' -}; -var DIRECTION_NEXT = 'next'; -var DIRECTION_PREV = 'prev'; -var DIRECTION_LEFT = 'left'; -var DIRECTION_RIGHT = 'right'; -var EVENT_SLIDE = "slide" + EVENT_KEY$2; -var EVENT_SLID = "slid" + EVENT_KEY$2; -var EVENT_KEYDOWN = "keydown" + EVENT_KEY$2; -var EVENT_MOUSEENTER = "mouseenter" + EVENT_KEY$2; -var EVENT_MOUSELEAVE = "mouseleave" + EVENT_KEY$2; -var EVENT_TOUCHSTART = "touchstart" + EVENT_KEY$2; -var EVENT_TOUCHMOVE = "touchmove" + EVENT_KEY$2; -var EVENT_TOUCHEND = "touchend" + EVENT_KEY$2; -var EVENT_POINTERDOWN = "pointerdown" + EVENT_KEY$2; -var EVENT_POINTERUP = "pointerup" + EVENT_KEY$2; -var EVENT_DRAG_START = "dragstart" + EVENT_KEY$2; -var EVENT_LOAD_DATA_API = "load" + EVENT_KEY$2 + DATA_API_KEY$2; -var EVENT_CLICK_DATA_API$2 = "click" + EVENT_KEY$2 + DATA_API_KEY$2; -var CLASS_NAME_CAROUSEL = 'carousel'; -var CLASS_NAME_ACTIVE$1 = 'active'; -var CLASS_NAME_SLIDE = 'slide'; -var CLASS_NAME_END = 'carousel-item-end'; -var CLASS_NAME_START = 'carousel-item-start'; -var CLASS_NAME_NEXT = 'carousel-item-next'; -var CLASS_NAME_PREV = 'carousel-item-prev'; -var CLASS_NAME_POINTER_EVENT = 'pointer-event'; -var SELECTOR_ACTIVE = '.active'; -var SELECTOR_ACTIVE_ITEM = '.active.carousel-item'; -var SELECTOR_ITEM = '.carousel-item'; -var SELECTOR_ITEM_IMG = '.carousel-item img'; -var SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev'; -var SELECTOR_INDICATORS = '.carousel-indicators'; -var SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'; -var SELECTOR_DATA_RIDE = '[data-bs-ride="carousel"]'; -var PointerType = { - TOUCH: 'touch', - PEN: 'pen' -}; -/** - * ------------------------------------------------------------------------ - * Class Definition - * ------------------------------------------------------------------------ - */ - -var Carousel = /*#__PURE__*/function (_BaseComponent) { - _inheritsLoose(Carousel, _BaseComponent); - - function Carousel(element, config) { - var _this; - - _this = _BaseComponent.call(this, element) || this; - _this._items = null; - _this._interval = null; - _this._activeElement = null; - _this._isPaused = false; - _this._isSliding = false; - _this.touchTimeout = null; - _this.touchStartX = 0; - _this.touchDeltaX = 0; - _this._config = _this._getConfig(config); - _this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, _this._element); - _this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0; - _this._pointerEvent = Boolean(window.PointerEvent); - - _this._addEventListeners(); - - return _this; - } // Getters - - - var _proto = Carousel.prototype; - - // Public - _proto.next = function next() { - if (!this._isSliding) { - this._slide(DIRECTION_NEXT); - } - }; - - _proto.nextWhenVisible = function nextWhenVisible() { - // Don't call next when the page isn't visible - // or the carousel or its parent isn't visible - if (!document.hidden && isVisible(this._element)) { - this.next(); - } - }; - - _proto.prev = function prev() { - if (!this._isSliding) { - this._slide(DIRECTION_PREV); - } - }; - - _proto.pause = function pause(event) { - if (!event) { - this._isPaused = true; - } - - if (SelectorEngine.findOne(SELECTOR_NEXT_PREV, this._element)) { - triggerTransitionEnd(this._element); - this.cycle(true); - } - - clearInterval(this._interval); - this._interval = null; - }; - - _proto.cycle = function cycle(event) { - if (!event) { - this._isPaused = false; - } - - if (this._interval) { - clearInterval(this._interval); - this._interval = null; - } - - if (this._config && this._config.interval && !this._isPaused) { - this._updateInterval(); - - this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval); - } - }; - - _proto.to = function to(index) { - var _this2 = this; - - this._activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element); - - var activeIndex = this._getItemIndex(this._activeElement); - - if (index > this._items.length - 1 || index < 0) { - return; - } - - if (this._isSliding) { - EventHandler.one(this._element, EVENT_SLID, function () { - return _this2.to(index); - }); - return; - } - - if (activeIndex === index) { - this.pause(); - this.cycle(); - return; - } - - var direction = index > activeIndex ? DIRECTION_NEXT : DIRECTION_PREV; - - this._slide(direction, this._items[index]); - }; - - _proto.dispose = function dispose() { - _BaseComponent.prototype.dispose.call(this); - - EventHandler.off(this._element, EVENT_KEY$2); - this._items = null; - this._config = null; - this._interval = null; - this._isPaused = null; - this._isSliding = null; - this._activeElement = null; - this._indicatorsElement = null; - } // Private - ; - - _proto._getConfig = function _getConfig(config) { - config = _extends({}, Default, config); - typeCheckConfig(NAME$2, config, DefaultType); - return config; - }; - - _proto._handleSwipe = function _handleSwipe() { - var absDeltax = Math.abs(this.touchDeltaX); - - if (absDeltax <= SWIPE_THRESHOLD) { - return; - } - - var direction = absDeltax / this.touchDeltaX; - this.touchDeltaX = 0; // swipe left - - if (direction > 0) { - this.prev(); - } // swipe right - - - if (direction < 0) { - this.next(); - } - }; - - _proto._addEventListeners = function _addEventListeners() { - var _this3 = this; - - if (this._config.keyboard) { - EventHandler.on(this._element, EVENT_KEYDOWN, function (event) { - return _this3._keydown(event); - }); - } - - if (this._config.pause === 'hover') { - EventHandler.on(this._element, EVENT_MOUSEENTER, function (event) { - return _this3.pause(event); - }); - EventHandler.on(this._element, EVENT_MOUSELEAVE, function (event) { - return _this3.cycle(event); - }); - } - - if (this._config.touch && this._touchSupported) { - this._addTouchEventListeners(); - } - }; - - _proto._addTouchEventListeners = function _addTouchEventListeners() { - var _this4 = this; - - var start = function start(event) { - if (_this4._pointerEvent && PointerType[event.pointerType.toUpperCase()]) { - _this4.touchStartX = event.clientX; - } else if (!_this4._pointerEvent) { - _this4.touchStartX = event.touches[0].clientX; - } - }; - - var move = function move(event) { - // ensure swiping with one touch and not pinching - if (event.touches && event.touches.length > 1) { - _this4.touchDeltaX = 0; - } else { - _this4.touchDeltaX = event.touches[0].clientX - _this4.touchStartX; - } - }; - - var end = function end(event) { - if (_this4._pointerEvent && PointerType[event.pointerType.toUpperCase()]) { - _this4.touchDeltaX = event.clientX - _this4.touchStartX; - } - - _this4._handleSwipe(); - - if (_this4._config.pause === 'hover') { - // If it's a touch-enabled device, mouseenter/leave are fired as - // part of the mouse compatibility events on first tap - the carousel - // would stop cycling until user tapped out of it; - // here, we listen for touchend, explicitly pause the carousel - // (as if it's the second time we tap on it, mouseenter compat event - // is NOT fired) and after a timeout (to allow for mouse compatibility - // events to fire) we explicitly restart cycling - _this4.pause(); - - if (_this4.touchTimeout) { - clearTimeout(_this4.touchTimeout); - } - - _this4.touchTimeout = setTimeout(function (event) { - return _this4.cycle(event); - }, TOUCHEVENT_COMPAT_WAIT + _this4._config.interval); - } - }; - - SelectorEngine.find(SELECTOR_ITEM_IMG, this._element).forEach(function (itemImg) { - EventHandler.on(itemImg, EVENT_DRAG_START, function (e) { - return e.preventDefault(); - }); - }); - - if (this._pointerEvent) { - EventHandler.on(this._element, EVENT_POINTERDOWN, function (event) { - return start(event); - }); - EventHandler.on(this._element, EVENT_POINTERUP, function (event) { - return end(event); - }); - - this._element.classList.add(CLASS_NAME_POINTER_EVENT); - } else { - EventHandler.on(this._element, EVENT_TOUCHSTART, function (event) { - return start(event); - }); - EventHandler.on(this._element, EVENT_TOUCHMOVE, function (event) { - return move(event); - }); - EventHandler.on(this._element, EVENT_TOUCHEND, function (event) { - return end(event); - }); - } - }; - - _proto._keydown = function _keydown(event) { - if (/input|textarea/i.test(event.target.tagName)) { - return; - } - - switch (event.key) { - case ARROW_LEFT_KEY: - event.preventDefault(); - this.prev(); - break; - - case ARROW_RIGHT_KEY: - event.preventDefault(); - this.next(); - break; - } - }; - - _proto._getItemIndex = function _getItemIndex(element) { - this._items = element && element.parentNode ? SelectorEngine.find(SELECTOR_ITEM, element.parentNode) : []; - return this._items.indexOf(element); - }; - - _proto._getItemByDirection = function _getItemByDirection(direction, activeElement) { - var isNextDirection = direction === DIRECTION_NEXT; - var isPrevDirection = direction === DIRECTION_PREV; - - var activeIndex = this._getItemIndex(activeElement); - - var lastItemIndex = this._items.length - 1; - var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex; - - if (isGoingToWrap && !this._config.wrap) { - return activeElement; - } - - var delta = direction === DIRECTION_PREV ? -1 : 1; - var itemIndex = (activeIndex + delta) % this._items.length; - return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex]; - }; - - _proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) { - var targetIndex = this._getItemIndex(relatedTarget); - - var fromIndex = this._getItemIndex(SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)); - - return EventHandler.trigger(this._element, EVENT_SLIDE, { - relatedTarget: relatedTarget, - direction: eventDirectionName, - from: fromIndex, - to: targetIndex - }); - }; - - _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) { - if (this._indicatorsElement) { - var indicators = SelectorEngine.find(SELECTOR_ACTIVE, this._indicatorsElement); - - for (var i = 0; i < indicators.length; i++) { - indicators[i].classList.remove(CLASS_NAME_ACTIVE$1); - } - - var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)]; - - if (nextIndicator) { - nextIndicator.classList.add(CLASS_NAME_ACTIVE$1); - } - } - }; - - _proto._updateInterval = function _updateInterval() { - var element = this._activeElement || SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element); - - if (!element) { - return; - } - - var elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10); - - if (elementInterval) { - this._config.defaultInterval = this._config.defaultInterval || this._config.interval; - this._config.interval = elementInterval; - } else { - this._config.interval = this._config.defaultInterval || this._config.interval; - } - }; - - _proto._slide = function _slide(direction, element) { - var _this5 = this; - - var activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element); - - var activeElementIndex = this._getItemIndex(activeElement); - - var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement); - - var nextElementIndex = this._getItemIndex(nextElement); - - var isCycling = Boolean(this._interval); - var directionalClassName; - var orderClassName; - var eventDirectionName; - - if (direction === DIRECTION_NEXT) { - directionalClassName = CLASS_NAME_START; - orderClassName = CLASS_NAME_NEXT; - eventDirectionName = DIRECTION_LEFT; - } else { - directionalClassName = CLASS_NAME_END; - orderClassName = CLASS_NAME_PREV; - eventDirectionName = DIRECTION_RIGHT; - } - - if (nextElement && nextElement.classList.contains(CLASS_NAME_ACTIVE$1)) { - this._isSliding = false; - return; - } - - var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName); - - if (slideEvent.defaultPrevented) { - return; - } - - if (!activeElement || !nextElement) { - // Some weirdness is happening, so we bail - return; - } - - this._isSliding = true; - - if (isCycling) { - this.pause(); - } - - this._setActiveIndicatorElement(nextElement); - - this._activeElement = nextElement; - - if (this._element.classList.contains(CLASS_NAME_SLIDE)) { - nextElement.classList.add(orderClassName); - reflow(nextElement); - activeElement.classList.add(directionalClassName); - nextElement.classList.add(directionalClassName); - var transitionDuration = getTransitionDurationFromElement(activeElement); - EventHandler.one(activeElement, TRANSITION_END, function () { - nextElement.classList.remove(directionalClassName, orderClassName); - nextElement.classList.add(CLASS_NAME_ACTIVE$1); - activeElement.classList.remove(CLASS_NAME_ACTIVE$1, orderClassName, directionalClassName); - _this5._isSliding = false; - setTimeout(function () { - EventHandler.trigger(_this5._element, EVENT_SLID, { - relatedTarget: nextElement, - direction: eventDirectionName, - from: activeElementIndex, - to: nextElementIndex - }); - }, 0); - }); - emulateTransitionEnd(activeElement, transitionDuration); - } else { - activeElement.classList.remove(CLASS_NAME_ACTIVE$1); - nextElement.classList.add(CLASS_NAME_ACTIVE$1); - this._isSliding = false; - EventHandler.trigger(this._element, EVENT_SLID, { - relatedTarget: nextElement, - direction: eventDirectionName, - from: activeElementIndex, - to: nextElementIndex - }); - } - - if (isCycling) { - this.cycle(); - } - } // Static - ; - - Carousel.carouselInterface = function carouselInterface(element, config) { - var data = Data.getData(element, DATA_KEY$2); - - var _config = _extends({}, Default, Manipulator.getDataAttributes(element)); - - if (typeof config === 'object') { - _config = _extends({}, _config, config); - } - - var action = typeof config === 'string' ? config : _config.slide; - - if (!data) { - data = new Carousel(element, _config); - } - - if (typeof config === 'number') { - data.to(config); - } else if (typeof action === 'string') { - if (typeof data[action] === 'undefined') { - throw new TypeError("No method named \"" + action + "\""); - } - - data[action](); - } else if (_config.interval && _config.ride) { - data.pause(); - data.cycle(); - } - }; - - Carousel.jQueryInterface = function jQueryInterface(config) { - return this.each(function () { - Carousel.carouselInterface(this, config); - }); - }; - - Carousel.dataApiClickHandler = function dataApiClickHandler(event) { - var target = getElementFromSelector(this); - - if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) { - return; - } - - var config = _extends({}, Manipulator.getDataAttributes(target), Manipulator.getDataAttributes(this)); - - var slideIndex = this.getAttribute('data-bs-slide-to'); - - if (slideIndex) { - config.interval = false; - } - - Carousel.carouselInterface(target, config); - - if (slideIndex) { - Data.getData(target, DATA_KEY$2).to(slideIndex); - } - - event.preventDefault(); - }; - - _createClass(Carousel, null, [{ - key: "Default", - get: function get() { - return Default; - } - }, { - key: "DATA_KEY", - get: function get() { - return DATA_KEY$2; - } - }]); - - return Carousel; -}(BaseComponent); -/** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ - - -EventHandler.on(document, EVENT_CLICK_DATA_API$2, SELECTOR_DATA_SLIDE, Carousel.dataApiClickHandler); -EventHandler.on(window, EVENT_LOAD_DATA_API, function () { - var carousels = SelectorEngine.find(SELECTOR_DATA_RIDE); - - for (var i = 0, len = carousels.length; i < len; i++) { - Carousel.carouselInterface(carousels[i], Data.getData(carousels[i], DATA_KEY$2)); - } -}); -/** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - * add .Carousel to jQuery only if jQuery is present - */ - -onDOMContentLoaded(function () { - var $ = getjQuery(); - /* istanbul ignore if */ - - if ($) { - var JQUERY_NO_CONFLICT = $.fn[NAME$2]; - $.fn[NAME$2] = Carousel.jQueryInterface; - $.fn[NAME$2].Constructor = Carousel; - - $.fn[NAME$2].noConflict = function () { - $.fn[NAME$2] = JQUERY_NO_CONFLICT; - return Carousel.jQueryInterface; - }; - } -}); - -/** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - -var NAME$3 = 'collapse'; -var DATA_KEY$3 = 'bs.collapse'; -var EVENT_KEY$3 = "." + DATA_KEY$3; -var DATA_API_KEY$3 = '.data-api'; -var Default$1 = { - toggle: true, - parent: '' -}; -var DefaultType$1 = { - toggle: 'boolean', - parent: '(string|element)' -}; -var EVENT_SHOW = "show" + EVENT_KEY$3; -var EVENT_SHOWN = "shown" + EVENT_KEY$3; -var EVENT_HIDE = "hide" + EVENT_KEY$3; -var EVENT_HIDDEN = "hidden" + EVENT_KEY$3; -var EVENT_CLICK_DATA_API$3 = "click" + EVENT_KEY$3 + DATA_API_KEY$3; -var CLASS_NAME_SHOW = 'show'; -var CLASS_NAME_COLLAPSE = 'collapse'; -var CLASS_NAME_COLLAPSING = 'collapsing'; -var CLASS_NAME_COLLAPSED = 'collapsed'; -var WIDTH = 'width'; -var HEIGHT = 'height'; -var SELECTOR_ACTIVES = '.show, .collapsing'; -var SELECTOR_DATA_TOGGLE$1 = '[data-bs-toggle="collapse"]'; -/** - * ------------------------------------------------------------------------ - * Class Definition - * ------------------------------------------------------------------------ - */ - -var Collapse = /*#__PURE__*/function (_BaseComponent) { - _inheritsLoose(Collapse, _BaseComponent); - - function Collapse(element, config) { - var _this; - - _this = _BaseComponent.call(this, element) || this; - _this._isTransitioning = false; - _this._config = _this._getConfig(config); - _this._triggerArray = SelectorEngine.find(SELECTOR_DATA_TOGGLE$1 + "[href=\"#" + element.id + "\"]," + (SELECTOR_DATA_TOGGLE$1 + "[data-bs-target=\"#" + element.id + "\"]")); - var toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE$1); - - for (var i = 0, len = toggleList.length; i < len; i++) { - var elem = toggleList[i]; - var selector = getSelectorFromElement(elem); - var filterElement = SelectorEngine.find(selector).filter(function (foundElem) { - return foundElem === element; - }); - - if (selector !== null && filterElement.length) { - _this._selector = selector; - - _this._triggerArray.push(elem); - } - } - - _this._parent = _this._config.parent ? _this._getParent() : null; - - if (!_this._config.parent) { - _this._addAriaAndCollapsedClass(_this._element, _this._triggerArray); - } - - if (_this._config.toggle) { - _this.toggle(); - } - - return _this; - } // Getters - - - var _proto = Collapse.prototype; - - // Public - _proto.toggle = function toggle() { - if (this._element.classList.contains(CLASS_NAME_SHOW)) { - this.hide(); - } else { - this.show(); - } - }; - - _proto.show = function show() { - var _this2 = this; - - if (this._isTransitioning || this._element.classList.contains(CLASS_NAME_SHOW)) { - return; - } - - var actives; - var activesData; - - if (this._parent) { - actives = SelectorEngine.find(SELECTOR_ACTIVES, this._parent).filter(function (elem) { - if (typeof _this2._config.parent === 'string') { - return elem.getAttribute('data-bs-parent') === _this2._config.parent; - } - - return elem.classList.contains(CLASS_NAME_COLLAPSE); - }); - - if (actives.length === 0) { - actives = null; - } - } - - var container = SelectorEngine.findOne(this._selector); - - if (actives) { - var tempActiveData = actives.find(function (elem) { - return container !== elem; - }); - activesData = tempActiveData ? Data.getData(tempActiveData, DATA_KEY$3) : null; - - if (activesData && activesData._isTransitioning) { - return; - } - } - - var startEvent = EventHandler.trigger(this._element, EVENT_SHOW); - - if (startEvent.defaultPrevented) { - return; - } - - if (actives) { - actives.forEach(function (elemActive) { - if (container !== elemActive) { - Collapse.collapseInterface(elemActive, 'hide'); - } - - if (!activesData) { - Data.setData(elemActive, DATA_KEY$3, null); - } - }); - } - - var dimension = this._getDimension(); - - this._element.classList.remove(CLASS_NAME_COLLAPSE); - - this._element.classList.add(CLASS_NAME_COLLAPSING); - - this._element.style[dimension] = 0; - - if (this._triggerArray.length) { - this._triggerArray.forEach(function (element) { - element.classList.remove(CLASS_NAME_COLLAPSED); - element.setAttribute('aria-expanded', true); - }); - } - - this.setTransitioning(true); - - var complete = function complete() { - _this2._element.classList.remove(CLASS_NAME_COLLAPSING); - - _this2._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW); - - _this2._element.style[dimension] = ''; - - _this2.setTransitioning(false); - - EventHandler.trigger(_this2._element, EVENT_SHOWN); - }; - - var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1); - var scrollSize = "scroll" + capitalizedDimension; - var transitionDuration = getTransitionDurationFromElement(this._element); - EventHandler.one(this._element, TRANSITION_END, complete); - emulateTransitionEnd(this._element, transitionDuration); - this._element.style[dimension] = this._element[scrollSize] + "px"; - }; - - _proto.hide = function hide() { - var _this3 = this; - - if (this._isTransitioning || !this._element.classList.contains(CLASS_NAME_SHOW)) { - return; - } - - var startEvent = EventHandler.trigger(this._element, EVENT_HIDE); - - if (startEvent.defaultPrevented) { - return; - } - - var dimension = this._getDimension(); - - this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + "px"; - reflow(this._element); - - this._element.classList.add(CLASS_NAME_COLLAPSING); - - this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW); - - var triggerArrayLength = this._triggerArray.length; - - if (triggerArrayLength > 0) { - for (var i = 0; i < triggerArrayLength; i++) { - var trigger = this._triggerArray[i]; - var elem = getElementFromSelector(trigger); - - if (elem && !elem.classList.contains(CLASS_NAME_SHOW)) { - trigger.classList.add(CLASS_NAME_COLLAPSED); - trigger.setAttribute('aria-expanded', false); - } - } - } - - this.setTransitioning(true); - - var complete = function complete() { - _this3.setTransitioning(false); - - _this3._element.classList.remove(CLASS_NAME_COLLAPSING); - - _this3._element.classList.add(CLASS_NAME_COLLAPSE); - - EventHandler.trigger(_this3._element, EVENT_HIDDEN); - }; - - this._element.style[dimension] = ''; - var transitionDuration = getTransitionDurationFromElement(this._element); - EventHandler.one(this._element, TRANSITION_END, complete); - emulateTransitionEnd(this._element, transitionDuration); - }; - - _proto.setTransitioning = function setTransitioning(isTransitioning) { - this._isTransitioning = isTransitioning; - }; - - _proto.dispose = function dispose() { - _BaseComponent.prototype.dispose.call(this); - - this._config = null; - this._parent = null; - this._triggerArray = null; - this._isTransitioning = null; - } // Private - ; - - _proto._getConfig = function _getConfig(config) { - config = _extends({}, Default$1, config); - config.toggle = Boolean(config.toggle); // Coerce string values - - typeCheckConfig(NAME$3, config, DefaultType$1); - return config; - }; - - _proto._getDimension = function _getDimension() { - return this._element.classList.contains(WIDTH) ? WIDTH : HEIGHT; - }; - - _proto._getParent = function _getParent() { - var _this4 = this; - - var parent = this._config.parent; - - if (isElement(parent)) { - // it's a jQuery object - if (typeof parent.jquery !== 'undefined' || typeof parent[0] !== 'undefined') { - parent = parent[0]; - } - } else { - parent = SelectorEngine.findOne(parent); - } - - var selector = SELECTOR_DATA_TOGGLE$1 + "[data-bs-parent=\"" + parent + "\"]"; - SelectorEngine.find(selector, parent).forEach(function (element) { - var selected = getElementFromSelector(element); - - _this4._addAriaAndCollapsedClass(selected, [element]); - }); - return parent; - }; - - _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) { - if (!element || !triggerArray.length) { - return; - } - - var isOpen = element.classList.contains(CLASS_NAME_SHOW); - triggerArray.forEach(function (elem) { - if (isOpen) { - elem.classList.remove(CLASS_NAME_COLLAPSED); - } else { - elem.classList.add(CLASS_NAME_COLLAPSED); - } - - elem.setAttribute('aria-expanded', isOpen); - }); - } // Static - ; - - Collapse.collapseInterface = function collapseInterface(element, config) { - var data = Data.getData(element, DATA_KEY$3); - - var _config = _extends({}, Default$1, Manipulator.getDataAttributes(element), typeof config === 'object' && config ? config : {}); - - if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) { - _config.toggle = false; - } - - if (!data) { - data = new Collapse(element, _config); - } - - if (typeof config === 'string') { - if (typeof data[config] === 'undefined') { - throw new TypeError("No method named \"" + config + "\""); - } - - data[config](); - } - }; - - Collapse.jQueryInterface = function jQueryInterface(config) { - return this.each(function () { - Collapse.collapseInterface(this, config); - }); - }; - - _createClass(Collapse, null, [{ - key: "Default", - get: function get() { - return Default$1; - } - }, { - key: "DATA_KEY", - get: function get() { - return DATA_KEY$3; - } - }]); - - return Collapse; -}(BaseComponent); -/** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ - - -EventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$1, function (event) { - // preventDefault only for elements (which change the URL) not inside the collapsible element - if (event.target.tagName === 'A') { - event.preventDefault(); - } - - var triggerData = Manipulator.getDataAttributes(this); - var selector = getSelectorFromElement(this); - var selectorElements = SelectorEngine.find(selector); - selectorElements.forEach(function (element) { - var data = Data.getData(element, DATA_KEY$3); - var config; - - if (data) { - // update parent attribute - if (data._parent === null && typeof triggerData.parent === 'string') { - data._config.parent = triggerData.parent; - data._parent = data._getParent(); - } - - config = 'toggle'; - } else { - config = triggerData; - } - - Collapse.collapseInterface(element, config); - }); -}); -/** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - * add .Collapse to jQuery only if jQuery is present - */ - -onDOMContentLoaded(function () { - var $ = getjQuery(); - /* istanbul ignore if */ - - if ($) { - var JQUERY_NO_CONFLICT = $.fn[NAME$3]; - $.fn[NAME$3] = Collapse.jQueryInterface; - $.fn[NAME$3].Constructor = Collapse; - - $.fn[NAME$3].noConflict = function () { - $.fn[NAME$3] = JQUERY_NO_CONFLICT; - return Collapse.jQueryInterface; - }; - } -}); - -/** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - -var NAME$4 = 'dropdown'; -var DATA_KEY$4 = 'bs.dropdown'; -var EVENT_KEY$4 = "." + DATA_KEY$4; -var DATA_API_KEY$4 = '.data-api'; -var ESCAPE_KEY = 'Escape'; -var SPACE_KEY = 'Space'; -var TAB_KEY = 'Tab'; -var ARROW_UP_KEY = 'ArrowUp'; -var ARROW_DOWN_KEY = 'ArrowDown'; -var RIGHT_MOUSE_BUTTON = 2; // MouseEvent.button value for the secondary button, usually the right button - -var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEY + "|" + ARROW_DOWN_KEY + "|" + ESCAPE_KEY); -var EVENT_HIDE$1 = "hide" + EVENT_KEY$4; -var EVENT_HIDDEN$1 = "hidden" + EVENT_KEY$4; -var EVENT_SHOW$1 = "show" + EVENT_KEY$4; -var EVENT_SHOWN$1 = "shown" + EVENT_KEY$4; -var EVENT_CLICK = "click" + EVENT_KEY$4; -var EVENT_CLICK_DATA_API$4 = "click" + EVENT_KEY$4 + DATA_API_KEY$4; -var EVENT_KEYDOWN_DATA_API = "keydown" + EVENT_KEY$4 + DATA_API_KEY$4; -var EVENT_KEYUP_DATA_API = "keyup" + EVENT_KEY$4 + DATA_API_KEY$4; -var CLASS_NAME_DISABLED = 'disabled'; -var CLASS_NAME_SHOW$1 = 'show'; -var CLASS_NAME_DROPUP = 'dropup'; -var CLASS_NAME_DROPEND = 'dropend'; -var CLASS_NAME_DROPSTART = 'dropstart'; -var CLASS_NAME_NAVBAR = 'navbar'; -var SELECTOR_DATA_TOGGLE$2 = '[data-bs-toggle="dropdown"]'; -var SELECTOR_FORM_CHILD = '.dropdown form'; -var SELECTOR_MENU = '.dropdown-menu'; -var SELECTOR_NAVBAR_NAV = '.navbar-nav'; -var SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'; -var PLACEMENT_TOP = isRTL ? 'top-end' : 'top-start'; -var PLACEMENT_TOPEND = isRTL ? 'top-start' : 'top-end'; -var PLACEMENT_BOTTOM = isRTL ? 'bottom-end' : 'bottom-start'; -var PLACEMENT_BOTTOMEND = isRTL ? 'bottom-start' : 'bottom-end'; -var PLACEMENT_RIGHT = isRTL ? 'left-start' : 'right-start'; -var PLACEMENT_LEFT = isRTL ? 'right-start' : 'left-start'; -var Default$2 = { - offset: 0, - flip: true, - boundary: 'clippingParents', - reference: 'toggle', - display: 'dynamic', - popperConfig: null -}; -var DefaultType$2 = { - offset: '(number|string|function)', - flip: 'boolean', - boundary: '(string|element)', - reference: '(string|element)', - display: 'string', - popperConfig: '(null|object)' -}; -/** - * ------------------------------------------------------------------------ - * Class Definition - * ------------------------------------------------------------------------ - */ - -var Dropdown = /*#__PURE__*/function (_BaseComponent) { - _inheritsLoose(Dropdown, _BaseComponent); - - function Dropdown(element, config) { - var _this; - - _this = _BaseComponent.call(this, element) || this; - _this._popper = null; - _this._config = _this._getConfig(config); - _this._menu = _this._getMenuElement(); - _this._inNavbar = _this._detectNavbar(); - - _this._addEventListeners(); - - return _this; - } // Getters - - - var _proto = Dropdown.prototype; - - // Public - _proto.toggle = function toggle() { - if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED)) { - return; - } - - var isActive = this._element.classList.contains(CLASS_NAME_SHOW$1); - - Dropdown.clearMenus(); - - if (isActive) { - return; - } - - this.show(); - }; - - _proto.show = function show() { - if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED) || this._menu.classList.contains(CLASS_NAME_SHOW$1)) { - return; - } - - var parent = Dropdown.getParentFromElement(this._element); - var relatedTarget = { - relatedTarget: this._element - }; - var showEvent = EventHandler.trigger(this._element, EVENT_SHOW$1, relatedTarget); - - if (showEvent.defaultPrevented) { - return; - } // Totally disable Popper for Dropdowns in Navbar - - - if (!this._inNavbar) { - if (typeof Popper === 'undefined') { - throw new TypeError('Bootstrap\'s dropdowns require Popper (https://popper.js.org)'); - } - - var referenceElement = this._element; - - if (this._config.reference === 'parent') { - referenceElement = parent; - } else if (isElement(this._config.reference)) { - referenceElement = this._config.reference; // Check if it's jQuery element - - if (typeof this._config.reference.jquery !== 'undefined') { - referenceElement = this._config.reference[0]; - } - } - - this._popper = createPopper(referenceElement, this._menu, this._getPopperConfig()); - } // 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 && !parent.closest(SELECTOR_NAVBAR_NAV)) { - var _ref; - - (_ref = []).concat.apply(_ref, document.body.children).forEach(function (elem) { - return EventHandler.on(elem, 'mouseover', null, noop()); - }); - } - - this._element.focus(); - - this._element.setAttribute('aria-expanded', true); - - this._menu.classList.toggle(CLASS_NAME_SHOW$1); - - this._element.classList.toggle(CLASS_NAME_SHOW$1); - - EventHandler.trigger(parent, EVENT_SHOWN$1, relatedTarget); - }; - - _proto.hide = function hide() { - if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED) || !this._menu.classList.contains(CLASS_NAME_SHOW$1)) { - return; - } - - var parent = Dropdown.getParentFromElement(this._element); - var relatedTarget = { - relatedTarget: this._element - }; - var hideEvent = EventHandler.trigger(parent, EVENT_HIDE$1, relatedTarget); - - if (hideEvent.defaultPrevented) { - return; - } - - if (this._popper) { - this._popper.destroy(); - } - - this._menu.classList.toggle(CLASS_NAME_SHOW$1); - - this._element.classList.toggle(CLASS_NAME_SHOW$1); - - EventHandler.trigger(parent, EVENT_HIDDEN$1, relatedTarget); - }; - - _proto.dispose = function dispose() { - _BaseComponent.prototype.dispose.call(this); - - EventHandler.off(this._element, EVENT_KEY$4); - this._menu = null; - - if (this._popper) { - this._popper.destroy(); - - this._popper = null; - } - }; - - _proto.update = function update() { - this._inNavbar = this._detectNavbar(); - - if (this._popper) { - this._popper.update(); - } - } // Private - ; - - _proto._addEventListeners = function _addEventListeners() { - var _this2 = this; - - EventHandler.on(this._element, EVENT_CLICK, function (event) { - event.preventDefault(); - event.stopPropagation(); - - _this2.toggle(); - }); - }; - - _proto._getConfig = function _getConfig(config) { - config = _extends({}, this.constructor.Default, Manipulator.getDataAttributes(this._element), config); - typeCheckConfig(NAME$4, config, this.constructor.DefaultType); - return config; - }; - - _proto._getMenuElement = function _getMenuElement() { - return SelectorEngine.next(this._element, SELECTOR_MENU)[0]; - }; - - _proto._getPlacement = function _getPlacement() { - var parentDropdown = this._element.parentNode; - - if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) { - return PLACEMENT_RIGHT; - } - - if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) { - return PLACEMENT_LEFT; - } // We need to trim the value because custom properties can also include spaces - - - var isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end'; - - if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) { - return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP; - } - - return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM; - }; - - _proto._detectNavbar = function _detectNavbar() { - return this._element.closest("." + CLASS_NAME_NAVBAR) !== null; - }; - - _proto._getPopperConfig = function _getPopperConfig() { - var popperConfig = { - placement: this._getPlacement(), - modifiers: [{ - name: 'preventOverflow', - options: { - altBoundary: this._config.flip, - rootBoundary: this._config.boundary - } - }] - }; // Disable Popper if we have a static display - - if (this._config.display === 'static') { - popperConfig.modifiers = [{ - name: 'applyStyles', - enabled: false - }]; - } - - return _extends({}, popperConfig, this._config.popperConfig); - } // Static - ; - - Dropdown.dropdownInterface = function dropdownInterface(element, config) { - var data = Data.getData(element, DATA_KEY$4); - - var _config = typeof config === 'object' ? config : null; - - if (!data) { - data = new Dropdown(element, _config); - } - - if (typeof config === 'string') { - if (typeof data[config] === 'undefined') { - throw new TypeError("No method named \"" + config + "\""); - } - - data[config](); - } - }; - - Dropdown.jQueryInterface = function jQueryInterface(config) { - return this.each(function () { - Dropdown.dropdownInterface(this, config); - }); - }; - - Dropdown.clearMenus = function clearMenus(event) { - if (event && (event.button === RIGHT_MOUSE_BUTTON || event.type === 'keyup' && event.key !== TAB_KEY)) { - return; - } - - var toggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE$2); - - for (var i = 0, len = toggles.length; i < len; i++) { - var parent = Dropdown.getParentFromElement(toggles[i]); - var context = Data.getData(toggles[i], DATA_KEY$4); - var relatedTarget = { - relatedTarget: toggles[i] - }; - - if (event && event.type === 'click') { - relatedTarget.clickEvent = event; - } - - if (!context) { - continue; - } - - var dropdownMenu = context._menu; - - if (!toggles[i].classList.contains(CLASS_NAME_SHOW$1)) { - continue; - } - - if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.key === TAB_KEY) && dropdownMenu.contains(event.target)) { - continue; - } - - var hideEvent = EventHandler.trigger(parent, EVENT_HIDE$1, relatedTarget); - - if (hideEvent.defaultPrevented) { - continue; - } // If this is a touch-enabled device we remove the extra - // empty mouseover listeners we added for iOS support - - - if ('ontouchstart' in document.documentElement) { - var _ref2; - - (_ref2 = []).concat.apply(_ref2, document.body.children).forEach(function (elem) { - return EventHandler.off(elem, 'mouseover', null, noop()); - }); - } - - toggles[i].setAttribute('aria-expanded', 'false'); - - if (context._popper) { - context._popper.destroy(); - } - - dropdownMenu.classList.remove(CLASS_NAME_SHOW$1); - toggles[i].classList.remove(CLASS_NAME_SHOW$1); - EventHandler.trigger(parent, EVENT_HIDDEN$1, relatedTarget); - } - }; - - Dropdown.getParentFromElement = function getParentFromElement(element) { - return getElementFromSelector(element) || element.parentNode; - }; - - Dropdown.dataApiKeydownHandler = function dataApiKeydownHandler(event) { - // If not input/textarea: - // - And not a key in REGEXP_KEYDOWN => not a dropdown command - // If input/textarea: - // - If space key => not a dropdown command - // - If key is other than escape - // - If key is not up or down => not a dropdown command - // - If trigger inside the menu => not a dropdown command - if (/input|textarea/i.test(event.target.tagName) ? event.key === SPACE_KEY || event.key !== ESCAPE_KEY && (event.key !== ARROW_DOWN_KEY && event.key !== ARROW_UP_KEY || event.target.closest(SELECTOR_MENU)) : !REGEXP_KEYDOWN.test(event.key)) { - return; - } - - event.preventDefault(); - event.stopPropagation(); - - if (this.disabled || this.classList.contains(CLASS_NAME_DISABLED)) { - return; - } - - var parent = Dropdown.getParentFromElement(this); - var isActive = this.classList.contains(CLASS_NAME_SHOW$1); - - if (event.key === ESCAPE_KEY) { - var button = this.matches(SELECTOR_DATA_TOGGLE$2) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE$2)[0]; - button.focus(); - Dropdown.clearMenus(); - return; - } - - if (!isActive || event.key === SPACE_KEY) { - Dropdown.clearMenus(); - return; - } - - var items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, parent).filter(isVisible); - - if (!items.length) { - return; - } - - var index = items.indexOf(event.target); // Up - - if (event.key === ARROW_UP_KEY && index > 0) { - index--; - } // Down - - - if (event.key === ARROW_DOWN_KEY && index < items.length - 1) { - index++; - } // index is -1 if the first keydown is an ArrowUp - - - index = index === -1 ? 0 : index; - items[index].focus(); - }; - - _createClass(Dropdown, null, [{ - key: "Default", - get: function get() { - return Default$2; - } - }, { - key: "DefaultType", - get: function get() { - return DefaultType$2; - } - }, { - key: "DATA_KEY", - get: function get() { - return DATA_KEY$4; - } - }]); - - return Dropdown; -}(BaseComponent); -/** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ - - -EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$2, Dropdown.dataApiKeydownHandler); -EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler); -EventHandler.on(document, EVENT_CLICK_DATA_API$4, Dropdown.clearMenus); -EventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus); -EventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$2, function (event) { - event.preventDefault(); - event.stopPropagation(); - Dropdown.dropdownInterface(this, 'toggle'); -}); -EventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_FORM_CHILD, function (e) { - return e.stopPropagation(); -}); -/** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - * add .Dropdown to jQuery only if jQuery is present - */ - -onDOMContentLoaded(function () { - var $ = getjQuery(); - /* istanbul ignore if */ - - if ($) { - var JQUERY_NO_CONFLICT = $.fn[NAME$4]; - $.fn[NAME$4] = Dropdown.jQueryInterface; - $.fn[NAME$4].Constructor = Dropdown; - - $.fn[NAME$4].noConflict = function () { - $.fn[NAME$4] = JQUERY_NO_CONFLICT; - return Dropdown.jQueryInterface; - }; - } -}); - -/** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - -var NAME$5 = 'modal'; -var DATA_KEY$5 = 'bs.modal'; -var EVENT_KEY$5 = "." + DATA_KEY$5; -var DATA_API_KEY$5 = '.data-api'; -var ESCAPE_KEY$1 = 'Escape'; -var Default$3 = { - backdrop: true, - keyboard: true, - focus: true -}; -var DefaultType$3 = { - backdrop: '(boolean|string)', - keyboard: 'boolean', - focus: 'boolean' -}; -var EVENT_HIDE$2 = "hide" + EVENT_KEY$5; -var EVENT_HIDE_PREVENTED = "hidePrevented" + EVENT_KEY$5; -var EVENT_HIDDEN$2 = "hidden" + EVENT_KEY$5; -var EVENT_SHOW$2 = "show" + EVENT_KEY$5; -var EVENT_SHOWN$2 = "shown" + EVENT_KEY$5; -var EVENT_FOCUSIN = "focusin" + EVENT_KEY$5; -var EVENT_RESIZE = "resize" + EVENT_KEY$5; -var EVENT_CLICK_DISMISS = "click.dismiss" + EVENT_KEY$5; -var EVENT_KEYDOWN_DISMISS = "keydown.dismiss" + EVENT_KEY$5; -var EVENT_MOUSEUP_DISMISS = "mouseup.dismiss" + EVENT_KEY$5; -var EVENT_MOUSEDOWN_DISMISS = "mousedown.dismiss" + EVENT_KEY$5; -var EVENT_CLICK_DATA_API$5 = "click" + EVENT_KEY$5 + DATA_API_KEY$5; -var CLASS_NAME_SCROLLBAR_MEASURER = 'modal-scrollbar-measure'; -var CLASS_NAME_BACKDROP = 'modal-backdrop'; -var CLASS_NAME_OPEN = 'modal-open'; -var CLASS_NAME_FADE = 'fade'; -var CLASS_NAME_SHOW$2 = 'show'; -var CLASS_NAME_STATIC = 'modal-static'; -var SELECTOR_DIALOG = '.modal-dialog'; -var SELECTOR_MODAL_BODY = '.modal-body'; -var SELECTOR_DATA_TOGGLE$3 = '[data-bs-toggle="modal"]'; -var SELECTOR_DATA_DISMISS = '[data-bs-dismiss="modal"]'; -var SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'; -var SELECTOR_STICKY_CONTENT = '.sticky-top'; -/** - * ------------------------------------------------------------------------ - * Class Definition - * ------------------------------------------------------------------------ - */ - -var Modal = /*#__PURE__*/function (_BaseComponent) { - _inheritsLoose(Modal, _BaseComponent); - - function Modal(element, config) { - var _this; - - _this = _BaseComponent.call(this, element) || this; - _this._config = _this._getConfig(config); - _this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, element); - _this._backdrop = null; - _this._isShown = false; - _this._isBodyOverflowing = false; - _this._ignoreBackdropClick = false; - _this._isTransitioning = false; - _this._scrollbarWidth = 0; - return _this; - } // Getters - - - var _proto = Modal.prototype; - - // Public - _proto.toggle = function toggle(relatedTarget) { - return this._isShown ? this.hide() : this.show(relatedTarget); - }; - - _proto.show = function show(relatedTarget) { - var _this2 = this; - - if (this._isShown || this._isTransitioning) { - return; - } - - if (this._element.classList.contains(CLASS_NAME_FADE)) { - this._isTransitioning = true; - } - - var showEvent = EventHandler.trigger(this._element, EVENT_SHOW$2, { - relatedTarget: relatedTarget - }); - - if (this._isShown || showEvent.defaultPrevented) { - return; - } - - this._isShown = true; - - this._checkScrollbar(); - - this._setScrollbar(); - - this._adjustDialog(); - - this._setEscapeEvent(); - - this._setResizeEvent(); - - EventHandler.on(this._element, EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, function (event) { - return _this2.hide(event); - }); - EventHandler.on(this._dialog, EVENT_MOUSEDOWN_DISMISS, function () { - EventHandler.one(_this2._element, EVENT_MOUSEUP_DISMISS, function (event) { - if (event.target === _this2._element) { - _this2._ignoreBackdropClick = true; - } - }); - }); - - this._showBackdrop(function () { - return _this2._showElement(relatedTarget); - }); - }; - - _proto.hide = function hide(event) { - var _this3 = this; - - if (event) { - event.preventDefault(); - } - - if (!this._isShown || this._isTransitioning) { - return; - } - - var hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$2); - - if (hideEvent.defaultPrevented) { - return; - } - - this._isShown = false; - - var transition = this._element.classList.contains(CLASS_NAME_FADE); - - if (transition) { - this._isTransitioning = true; - } - - this._setEscapeEvent(); - - this._setResizeEvent(); - - EventHandler.off(document, EVENT_FOCUSIN); - - this._element.classList.remove(CLASS_NAME_SHOW$2); - - EventHandler.off(this._element, EVENT_CLICK_DISMISS); - EventHandler.off(this._dialog, EVENT_MOUSEDOWN_DISMISS); - - if (transition) { - var transitionDuration = getTransitionDurationFromElement(this._element); - EventHandler.one(this._element, TRANSITION_END, function (event) { - return _this3._hideModal(event); - }); - emulateTransitionEnd(this._element, transitionDuration); - } else { - this._hideModal(); - } - }; - - _proto.dispose = function dispose() { - [window, this._element, this._dialog].forEach(function (htmlElement) { - return EventHandler.off(htmlElement, EVENT_KEY$5); - }); - - _BaseComponent.prototype.dispose.call(this); - /** - * `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API` - * Do not move `document` in `htmlElements` array - * It will remove `EVENT_CLICK_DATA_API` event that should remain - */ - - - EventHandler.off(document, EVENT_FOCUSIN); - this._config = null; - this._dialog = null; - this._backdrop = null; - this._isShown = null; - this._isBodyOverflowing = null; - this._ignoreBackdropClick = null; - this._isTransitioning = null; - this._scrollbarWidth = null; - }; - - _proto.handleUpdate = function handleUpdate() { - this._adjustDialog(); - } // Private - ; - - _proto._getConfig = function _getConfig(config) { - config = _extends({}, Default$3, config); - typeCheckConfig(NAME$5, config, DefaultType$3); - return config; - }; - - _proto._showElement = function _showElement(relatedTarget) { - var _this4 = this; - - var transition = this._element.classList.contains(CLASS_NAME_FADE); - - var modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog); - - if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) { - // Don't move modal's DOM position - document.body.appendChild(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; - - if (modalBody) { - modalBody.scrollTop = 0; - } - - if (transition) { - reflow(this._element); - } - - this._element.classList.add(CLASS_NAME_SHOW$2); - - if (this._config.focus) { - this._enforceFocus(); - } - - var transitionComplete = function transitionComplete() { - if (_this4._config.focus) { - _this4._element.focus(); - } - - _this4._isTransitioning = false; - EventHandler.trigger(_this4._element, EVENT_SHOWN$2, { - relatedTarget: relatedTarget - }); - }; - - if (transition) { - var transitionDuration = getTransitionDurationFromElement(this._dialog); - EventHandler.one(this._dialog, TRANSITION_END, transitionComplete); - emulateTransitionEnd(this._dialog, transitionDuration); - } else { - transitionComplete(); - } - }; - - _proto._enforceFocus = function _enforceFocus() { - var _this5 = this; - - EventHandler.off(document, EVENT_FOCUSIN); // guard against infinite focus loop - - EventHandler.on(document, EVENT_FOCUSIN, function (event) { - if (document !== event.target && _this5._element !== event.target && !_this5._element.contains(event.target)) { - _this5._element.focus(); - } - }); - }; - - _proto._setEscapeEvent = function _setEscapeEvent() { - var _this6 = this; - - if (this._isShown) { - EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, function (event) { - if (_this6._config.keyboard && event.key === ESCAPE_KEY$1) { - event.preventDefault(); - - _this6.hide(); - } else if (!_this6._config.keyboard && event.key === ESCAPE_KEY$1) { - _this6._triggerBackdropTransition(); - } - }); - } else { - EventHandler.off(this._element, EVENT_KEYDOWN_DISMISS); - } - }; - - _proto._setResizeEvent = function _setResizeEvent() { - var _this7 = this; - - if (this._isShown) { - EventHandler.on(window, EVENT_RESIZE, function () { - return _this7._adjustDialog(); - }); - } else { - EventHandler.off(window, EVENT_RESIZE); - } - }; - - _proto._hideModal = function _hideModal() { - var _this8 = this; - - this._element.style.display = 'none'; - - this._element.setAttribute('aria-hidden', true); - - this._element.removeAttribute('aria-modal'); - - this._element.removeAttribute('role'); - - this._isTransitioning = false; - - this._showBackdrop(function () { - document.body.classList.remove(CLASS_NAME_OPEN); - - _this8._resetAdjustments(); - - _this8._resetScrollbar(); - - EventHandler.trigger(_this8._element, EVENT_HIDDEN$2); - }); - }; - - _proto._removeBackdrop = function _removeBackdrop() { - this._backdrop.parentNode.removeChild(this._backdrop); - - this._backdrop = null; - }; - - _proto._showBackdrop = function _showBackdrop(callback) { - var _this9 = this; - - var animate = this._element.classList.contains(CLASS_NAME_FADE) ? CLASS_NAME_FADE : ''; - - if (this._isShown && this._config.backdrop) { - this._backdrop = document.createElement('div'); - this._backdrop.className = CLASS_NAME_BACKDROP; - - if (animate) { - this._backdrop.classList.add(animate); - } - - document.body.appendChild(this._backdrop); - EventHandler.on(this._element, EVENT_CLICK_DISMISS, function (event) { - if (_this9._ignoreBackdropClick) { - _this9._ignoreBackdropClick = false; - return; - } - - if (event.target !== event.currentTarget) { - return; - } - - if (_this9._config.backdrop === 'static') { - _this9._triggerBackdropTransition(); - } else { - _this9.hide(); - } - }); - - if (animate) { - reflow(this._backdrop); - } - - this._backdrop.classList.add(CLASS_NAME_SHOW$2); - - if (!animate) { - callback(); - return; - } - - var backdropTransitionDuration = getTransitionDurationFromElement(this._backdrop); - EventHandler.one(this._backdrop, TRANSITION_END, callback); - emulateTransitionEnd(this._backdrop, backdropTransitionDuration); - } else if (!this._isShown && this._backdrop) { - this._backdrop.classList.remove(CLASS_NAME_SHOW$2); - - var callbackRemove = function callbackRemove() { - _this9._removeBackdrop(); - - callback(); - }; - - if (this._element.classList.contains(CLASS_NAME_FADE)) { - var _backdropTransitionDuration = getTransitionDurationFromElement(this._backdrop); - - EventHandler.one(this._backdrop, TRANSITION_END, callbackRemove); - emulateTransitionEnd(this._backdrop, _backdropTransitionDuration); - } else { - callbackRemove(); - } - } else { - callback(); - } - }; - - _proto._triggerBackdropTransition = function _triggerBackdropTransition() { - var _this10 = this; - - var hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED); - - if (hideEvent.defaultPrevented) { - return; - } - - var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; - - if (!isModalOverflowing) { - this._element.style.overflowY = 'hidden'; - } - - this._element.classList.add(CLASS_NAME_STATIC); - - var modalTransitionDuration = getTransitionDurationFromElement(this._dialog); - EventHandler.off(this._element, TRANSITION_END); - EventHandler.one(this._element, TRANSITION_END, function () { - _this10._element.classList.remove(CLASS_NAME_STATIC); - - if (!isModalOverflowing) { - EventHandler.one(_this10._element, TRANSITION_END, function () { - _this10._element.style.overflowY = ''; - }); - emulateTransitionEnd(_this10._element, modalTransitionDuration); - } - }); - emulateTransitionEnd(this._element, modalTransitionDuration); - - this._element.focus(); - } // ---------------------------------------------------------------------- - // the following methods are used to handle overflowing modals - // ---------------------------------------------------------------------- - ; - - _proto._adjustDialog = function _adjustDialog() { - var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; - - if (!this._isBodyOverflowing && isModalOverflowing && !isRTL || this._isBodyOverflowing && !isModalOverflowing && isRTL) { - this._element.style.paddingLeft = this._scrollbarWidth + "px"; - } - - if (this._isBodyOverflowing && !isModalOverflowing && !isRTL || !this._isBodyOverflowing && isModalOverflowing && isRTL) { - this._element.style.paddingRight = this._scrollbarWidth + "px"; - } - }; - - _proto._resetAdjustments = function _resetAdjustments() { - this._element.style.paddingLeft = ''; - this._element.style.paddingRight = ''; - }; - - _proto._checkScrollbar = function _checkScrollbar() { - var rect = document.body.getBoundingClientRect(); - this._isBodyOverflowing = Math.round(rect.left + rect.right) < window.innerWidth; - this._scrollbarWidth = this._getScrollbarWidth(); - }; - - _proto._setScrollbar = function _setScrollbar() { - var _this11 = this; - - if (this._isBodyOverflowing) { - // Note: DOMNode.style.paddingRight returns the actual value or '' if not set - // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set - // Adjust fixed content padding - SelectorEngine.find(SELECTOR_FIXED_CONTENT).forEach(function (element) { - var actualPadding = element.style.paddingRight; - var calculatedPadding = window.getComputedStyle(element)['padding-right']; - Manipulator.setDataAttribute(element, 'padding-right', actualPadding); - element.style.paddingRight = Number.parseFloat(calculatedPadding) + _this11._scrollbarWidth + "px"; - }); // Adjust sticky content margin - - SelectorEngine.find(SELECTOR_STICKY_CONTENT).forEach(function (element) { - var actualMargin = element.style.marginRight; - var calculatedMargin = window.getComputedStyle(element)['margin-right']; - Manipulator.setDataAttribute(element, 'margin-right', actualMargin); - element.style.marginRight = Number.parseFloat(calculatedMargin) - _this11._scrollbarWidth + "px"; - }); // Adjust body padding - - var actualPadding = document.body.style.paddingRight; - var calculatedPadding = window.getComputedStyle(document.body)['padding-right']; - Manipulator.setDataAttribute(document.body, 'padding-right', actualPadding); - document.body.style.paddingRight = Number.parseFloat(calculatedPadding) + this._scrollbarWidth + "px"; - } - - document.body.classList.add(CLASS_NAME_OPEN); - }; - - _proto._resetScrollbar = function _resetScrollbar() { - // Restore fixed content padding - SelectorEngine.find(SELECTOR_FIXED_CONTENT).forEach(function (element) { - var padding = Manipulator.getDataAttribute(element, 'padding-right'); - - if (typeof padding !== 'undefined') { - Manipulator.removeDataAttribute(element, 'padding-right'); - element.style.paddingRight = padding; - } - }); // Restore sticky content and navbar-toggler margin - - SelectorEngine.find("" + SELECTOR_STICKY_CONTENT).forEach(function (element) { - var margin = Manipulator.getDataAttribute(element, 'margin-right'); - - if (typeof margin !== 'undefined') { - Manipulator.removeDataAttribute(element, 'margin-right'); - element.style.marginRight = margin; - } - }); // Restore body padding - - var padding = Manipulator.getDataAttribute(document.body, 'padding-right'); - - if (typeof padding === 'undefined') { - document.body.style.paddingRight = ''; - } else { - Manipulator.removeDataAttribute(document.body, 'padding-right'); - document.body.style.paddingRight = padding; - } - }; - - _proto._getScrollbarWidth = function _getScrollbarWidth() { - // thx d.walsh - var scrollDiv = document.createElement('div'); - scrollDiv.className = CLASS_NAME_SCROLLBAR_MEASURER; - document.body.appendChild(scrollDiv); - var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth; - document.body.removeChild(scrollDiv); - return scrollbarWidth; - } // Static - ; - - Modal.jQueryInterface = function jQueryInterface(config, relatedTarget) { - return this.each(function () { - var data = Data.getData(this, DATA_KEY$5); - - var _config = _extends({}, Default$3, Manipulator.getDataAttributes(this), typeof config === 'object' && config ? config : {}); - - if (!data) { - data = new Modal(this, _config); - } - - if (typeof config === 'string') { - if (typeof data[config] === 'undefined') { - throw new TypeError("No method named \"" + config + "\""); - } - - data[config](relatedTarget); - } - }); - }; - - _createClass(Modal, null, [{ - key: "Default", - get: function get() { - return Default$3; - } - }, { - key: "DATA_KEY", - get: function get() { - return DATA_KEY$5; - } - }]); - - return Modal; -}(BaseComponent); -/** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ - - -EventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_TOGGLE$3, function (event) { - var _this12 = this; - - var target = getElementFromSelector(this); - - if (this.tagName === 'A' || this.tagName === 'AREA') { - event.preventDefault(); - } - - EventHandler.one(target, EVENT_SHOW$2, function (showEvent) { - if (showEvent.defaultPrevented) { - // only register focus restorer if modal will actually get shown - return; - } - - EventHandler.one(target, EVENT_HIDDEN$2, function () { - if (isVisible(_this12)) { - _this12.focus(); - } - }); - }); - var data = Data.getData(target, DATA_KEY$5); - - if (!data) { - var config = _extends({}, Manipulator.getDataAttributes(target), Manipulator.getDataAttributes(this)); - - data = new Modal(target, config); - } - - data.show(this); -}); -/** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - * add .Modal to jQuery only if jQuery is present - */ - -onDOMContentLoaded(function () { - var $ = getjQuery(); - /* istanbul ignore if */ - - if ($) { - var JQUERY_NO_CONFLICT = $.fn[NAME$5]; - $.fn[NAME$5] = Modal.jQueryInterface; - $.fn[NAME$5].Constructor = Modal; - - $.fn[NAME$5].noConflict = function () { - $.fn[NAME$5] = JQUERY_NO_CONFLICT; - return Modal.jQueryInterface; - }; - } -}); - -/** - * -------------------------------------------------------------------------- - * Bootstrap (v5.0.0-beta1): util/sanitizer.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ -var uriAttrs = new Set(['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']); -var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i; -/** - * A pattern that recognizes a commonly useful subset of URLs that are safe. - * - * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts - */ - -var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/gi; -/** - * A pattern that matches safe data URLs. Only matches image, video and audio types. - * - * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts - */ - -var DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i; - -var allowedAttribute = function allowedAttribute(attr, allowedAttributeList) { - var attrName = attr.nodeName.toLowerCase(); - - if (allowedAttributeList.includes(attrName)) { - if (uriAttrs.has(attrName)) { - return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN)); - } - - return true; - } - - var regExp = allowedAttributeList.filter(function (attrRegex) { - return attrRegex instanceof RegExp; - }); // Check if a regular expression validates the attribute. - - for (var i = 0, len = regExp.length; i < len; i++) { - if (attrName.match(regExp[i])) { - return true; - } - } - - return false; -}; - -var DefaultAllowlist = { - // Global attributes allowed on any supplied element below. - '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN], - a: ['target', 'href', 'title', 'rel'], - area: [], - b: [], - br: [], - col: [], - code: [], - div: [], - em: [], - hr: [], - h1: [], - h2: [], - h3: [], - h4: [], - h5: [], - h6: [], - i: [], - img: ['src', 'srcset', 'alt', 'title', 'width', 'height'], - li: [], - ol: [], - p: [], - pre: [], - s: [], - small: [], - span: [], - sub: [], - sup: [], - strong: [], - u: [], - ul: [] -}; -function sanitizeHtml(unsafeHtml, allowList, sanitizeFn) { - var _ref; - - if (!unsafeHtml.length) { - return unsafeHtml; - } - - if (sanitizeFn && typeof sanitizeFn === 'function') { - return sanitizeFn(unsafeHtml); - } - - var domParser = new window.DOMParser(); - var createdDocument = domParser.parseFromString(unsafeHtml, 'text/html'); - var allowlistKeys = Object.keys(allowList); - - var elements = (_ref = []).concat.apply(_ref, createdDocument.body.querySelectorAll('*')); - - var _loop = function _loop(i, len) { - var _ref2; - - var el = elements[i]; - var elName = el.nodeName.toLowerCase(); - - if (!allowlistKeys.includes(elName)) { - el.parentNode.removeChild(el); - return "continue"; - } - - var attributeList = (_ref2 = []).concat.apply(_ref2, el.attributes); - - var allowedAttributes = [].concat(allowList['*'] || [], allowList[elName] || []); - attributeList.forEach(function (attr) { - if (!allowedAttribute(attr, allowedAttributes)) { - el.removeAttribute(attr.nodeName); - } - }); - }; - - for (var i = 0, len = elements.length; i < len; i++) { - var _ret = _loop(i); - - if (_ret === "continue") continue; - } - - return createdDocument.body.innerHTML; -} - -/** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - -var NAME$6 = 'tooltip'; -var DATA_KEY$6 = 'bs.tooltip'; -var EVENT_KEY$6 = "." + DATA_KEY$6; -var CLASS_PREFIX = 'bs-tooltip'; -var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", 'g'); -var DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn']); -var DefaultType$4 = { - animation: 'boolean', - template: 'string', - title: '(string|element|function)', - trigger: 'string', - delay: '(number|object)', - html: 'boolean', - selector: '(string|boolean)', - placement: '(string|function)', - container: '(string|element|boolean)', - fallbackPlacements: '(null|array)', - boundary: '(string|element)', - customClass: '(string|function)', - sanitize: 'boolean', - sanitizeFn: '(null|function)', - allowList: 'object', - popperConfig: '(null|object)' -}; -var AttachmentMap = { - AUTO: 'auto', - TOP: 'top', - RIGHT: isRTL ? 'left' : 'right', - BOTTOM: 'bottom', - LEFT: isRTL ? 'right' : 'left' -}; -var Default$4 = { - animation: true, - template: '' + '' + '' + '', - trigger: 'hover focus', - title: '', - delay: 0, - html: false, - selector: false, - placement: 'top', - container: false, - fallbackPlacements: null, - boundary: 'clippingParents', - customClass: '', - sanitize: true, - sanitizeFn: null, - allowList: DefaultAllowlist, - popperConfig: null -}; -var Event$1 = { - HIDE: "hide" + EVENT_KEY$6, - HIDDEN: "hidden" + EVENT_KEY$6, - SHOW: "show" + EVENT_KEY$6, - SHOWN: "shown" + EVENT_KEY$6, - INSERTED: "inserted" + EVENT_KEY$6, - CLICK: "click" + EVENT_KEY$6, - FOCUSIN: "focusin" + EVENT_KEY$6, - FOCUSOUT: "focusout" + EVENT_KEY$6, - MOUSEENTER: "mouseenter" + EVENT_KEY$6, - MOUSELEAVE: "mouseleave" + EVENT_KEY$6 -}; -var CLASS_NAME_FADE$1 = 'fade'; -var CLASS_NAME_MODAL = 'modal'; -var CLASS_NAME_SHOW$3 = 'show'; -var HOVER_STATE_SHOW = 'show'; -var HOVER_STATE_OUT = 'out'; -var SELECTOR_TOOLTIP_INNER = '.tooltip-inner'; -var TRIGGER_HOVER = 'hover'; -var TRIGGER_FOCUS = 'focus'; -var TRIGGER_CLICK = 'click'; -var TRIGGER_MANUAL = 'manual'; -/** - * ------------------------------------------------------------------------ - * Class Definition - * ------------------------------------------------------------------------ - */ - -var Tooltip = /*#__PURE__*/function (_BaseComponent) { - _inheritsLoose(Tooltip, _BaseComponent); - - function Tooltip(element, config) { - var _this; - - if (typeof Popper === 'undefined') { - throw new TypeError('Bootstrap\'s tooltips require Popper (https://popper.js.org)'); - } - - _this = _BaseComponent.call(this, element) || this; // private - - _this._isEnabled = true; - _this._timeout = 0; - _this._hoverState = ''; - _this._activeTrigger = {}; - _this._popper = null; // Protected - - _this.config = _this._getConfig(config); - _this.tip = null; - - _this._setListeners(); - - return _this; - } // Getters - - - var _proto = Tooltip.prototype; - - // Public - _proto.enable = function enable() { - this._isEnabled = true; - }; - - _proto.disable = function disable() { - this._isEnabled = false; - }; - - _proto.toggleEnabled = function toggleEnabled() { - this._isEnabled = !this._isEnabled; - }; - - _proto.toggle = function toggle(event) { - if (!this._isEnabled) { - return; - } - - if (event) { - var dataKey = this.constructor.DATA_KEY; - var context = Data.getData(event.delegateTarget, dataKey); - - if (!context) { - context = new this.constructor(event.delegateTarget, this._getDelegateConfig()); - Data.setData(event.delegateTarget, dataKey, context); - } - - context._activeTrigger.click = !context._activeTrigger.click; - - if (context._isWithActiveTrigger()) { - context._enter(null, context); - } else { - context._leave(null, context); - } - } else { - if (this.getTipElement().classList.contains(CLASS_NAME_SHOW$3)) { - this._leave(null, this); - - return; - } - - this._enter(null, this); - } - }; - - _proto.dispose = function dispose() { - clearTimeout(this._timeout); - EventHandler.off(this._element, this.constructor.EVENT_KEY); - EventHandler.off(this._element.closest("." + CLASS_NAME_MODAL), 'hide.bs.modal', this._hideModalHandler); - - if (this.tip) { - this.tip.parentNode.removeChild(this.tip); - } - - this._isEnabled = null; - this._timeout = null; - this._hoverState = null; - this._activeTrigger = null; - - if (this._popper) { - this._popper.destroy(); - } - - this._popper = null; - this.config = null; - this.tip = null; - - _BaseComponent.prototype.dispose.call(this); - }; - - _proto.show = function show() { - var _this2 = this; - - if (this._element.style.display === 'none') { - throw new Error('Please use show on visible elements'); - } - - if (this.isWithContent() && this._isEnabled) { - var showEvent = EventHandler.trigger(this._element, this.constructor.Event.SHOW); - var shadowRoot = findShadowRoot(this._element); - var isInTheDom = shadowRoot === null ? this._element.ownerDocument.documentElement.contains(this._element) : shadowRoot.contains(this._element); - - if (showEvent.defaultPrevented || !isInTheDom) { - return; - } - - var tip = this.getTipElement(); - var tipId = getUID(this.constructor.NAME); - tip.setAttribute('id', tipId); - - this._element.setAttribute('aria-describedby', tipId); - - this.setContent(); - - if (this.config.animation) { - tip.classList.add(CLASS_NAME_FADE$1); - } - - var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this._element) : this.config.placement; - - var attachment = this._getAttachment(placement); - - this._addAttachmentClass(attachment); - - var container = this._getContainer(); - - Data.setData(tip, this.constructor.DATA_KEY, this); - - if (!this._element.ownerDocument.documentElement.contains(this.tip)) { - container.appendChild(tip); - } - - EventHandler.trigger(this._element, this.constructor.Event.INSERTED); - this._popper = createPopper(this._element, tip, this._getPopperConfig(attachment)); - tip.classList.add(CLASS_NAME_SHOW$3); - var customClass = typeof this.config.customClass === 'function' ? this.config.customClass() : this.config.customClass; - - if (customClass) { - var _tip$classList; - - (_tip$classList = tip.classList).add.apply(_tip$classList, customClass.split(' ')); - } // If this is a touch-enabled device we add extra - // empty mouseover listeners to the body's immediate children; - // only needed because of broken event delegation on iOS - // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html - - - if ('ontouchstart' in document.documentElement) { - var _ref; - - (_ref = []).concat.apply(_ref, document.body.children).forEach(function (element) { - EventHandler.on(element, 'mouseover', noop()); - }); - } - - var complete = function complete() { - var prevHoverState = _this2._hoverState; - _this2._hoverState = null; - EventHandler.trigger(_this2._element, _this2.constructor.Event.SHOWN); - - if (prevHoverState === HOVER_STATE_OUT) { - _this2._leave(null, _this2); - } - }; - - if (this.tip.classList.contains(CLASS_NAME_FADE$1)) { - var transitionDuration = getTransitionDurationFromElement(this.tip); - EventHandler.one(this.tip, TRANSITION_END, complete); - emulateTransitionEnd(this.tip, transitionDuration); - } else { - complete(); - } - } - }; - - _proto.hide = function hide() { - var _this3 = this; - - if (!this._popper) { - return; - } - - var tip = this.getTipElement(); - - var complete = function complete() { - if (_this3._hoverState !== HOVER_STATE_SHOW && tip.parentNode) { - tip.parentNode.removeChild(tip); - } - - _this3._cleanTipClass(); - - _this3._element.removeAttribute('aria-describedby'); - - EventHandler.trigger(_this3._element, _this3.constructor.Event.HIDDEN); - - if (_this3._popper) { - _this3._popper.destroy(); - - _this3._popper = null; - } - }; - - var hideEvent = EventHandler.trigger(this._element, this.constructor.Event.HIDE); - - if (hideEvent.defaultPrevented) { - return; - } - - tip.classList.remove(CLASS_NAME_SHOW$3); // If this is a touch-enabled device we remove the extra - // empty mouseover listeners we added for iOS support - - if ('ontouchstart' in document.documentElement) { - var _ref2; - - (_ref2 = []).concat.apply(_ref2, document.body.children).forEach(function (element) { - return EventHandler.off(element, 'mouseover', noop); - }); - } - - this._activeTrigger[TRIGGER_CLICK] = false; - this._activeTrigger[TRIGGER_FOCUS] = false; - this._activeTrigger[TRIGGER_HOVER] = false; - - if (this.tip.classList.contains(CLASS_NAME_FADE$1)) { - var transitionDuration = getTransitionDurationFromElement(tip); - EventHandler.one(tip, TRANSITION_END, complete); - emulateTransitionEnd(tip, transitionDuration); - } else { - complete(); - } - - this._hoverState = ''; - }; - - _proto.update = function update() { - if (this._popper !== null) { - this._popper.update(); - } - } // Protected - ; - - _proto.isWithContent = function isWithContent() { - return Boolean(this.getTitle()); - }; - - _proto.getTipElement = function getTipElement() { - if (this.tip) { - return this.tip; - } - - var element = document.createElement('div'); - element.innerHTML = this.config.template; - this.tip = element.children[0]; - return this.tip; - }; - - _proto.setContent = function setContent() { - var tip = this.getTipElement(); - this.setElementContent(SelectorEngine.findOne(SELECTOR_TOOLTIP_INNER, tip), this.getTitle()); - tip.classList.remove(CLASS_NAME_FADE$1, CLASS_NAME_SHOW$3); - }; - - _proto.setElementContent = function setElementContent(element, content) { - if (element === null) { - return; - } - - if (typeof content === 'object' && isElement(content)) { - if (content.jquery) { - content = content[0]; - } // content is a DOM node or a jQuery - - - if (this.config.html) { - if (content.parentNode !== element) { - element.innerHTML = ''; - element.appendChild(content); - } - } else { - element.textContent = content.textContent; - } - - return; - } - - if (this.config.html) { - if (this.config.sanitize) { - content = sanitizeHtml(content, this.config.allowList, this.config.sanitizeFn); - } - - element.innerHTML = content; - } else { - element.textContent = content; - } - }; - - _proto.getTitle = function getTitle() { - var title = this._element.getAttribute('data-bs-original-title'); - - if (!title) { - title = typeof this.config.title === 'function' ? this.config.title.call(this._element) : this.config.title; - } - - return title; - }; - - _proto.updateAttachment = function updateAttachment(attachment) { - if (attachment === 'right') { - return 'end'; - } - - if (attachment === 'left') { - return 'start'; - } - - return attachment; - } // Private - ; - - _proto._getPopperConfig = function _getPopperConfig(attachment) { - var _this4 = this; - - var flipModifier = { - name: 'flip', - options: { - altBoundary: true - } - }; - - if (this.config.fallbackPlacements) { - flipModifier.options.fallbackPlacements = this.config.fallbackPlacements; - } - - var defaultBsConfig = { - placement: attachment, - modifiers: [flipModifier, { - name: 'preventOverflow', - options: { - rootBoundary: this.config.boundary - } - }, { - name: 'arrow', - options: { - element: "." + this.constructor.NAME + "-arrow" - } - }, { - name: 'onChange', - enabled: true, - phase: 'afterWrite', - fn: function fn(data) { - return _this4._handlePopperPlacementChange(data); - } - }], - onFirstUpdate: function onFirstUpdate(data) { - if (data.options.placement !== data.placement) { - _this4._handlePopperPlacementChange(data); - } - } - }; - return _extends({}, defaultBsConfig, this.config.popperConfig); - }; - - _proto._addAttachmentClass = function _addAttachmentClass(attachment) { - this.getTipElement().classList.add(CLASS_PREFIX + "-" + this.updateAttachment(attachment)); - }; - - _proto._getContainer = function _getContainer() { - if (this.config.container === false) { - return document.body; - } - - if (isElement(this.config.container)) { - return this.config.container; - } - - return SelectorEngine.findOne(this.config.container); - }; - - _proto._getAttachment = function _getAttachment(placement) { - return AttachmentMap[placement.toUpperCase()]; - }; - - _proto._setListeners = function _setListeners() { - var _this5 = this; - - var triggers = this.config.trigger.split(' '); - triggers.forEach(function (trigger) { - if (trigger === 'click') { - EventHandler.on(_this5._element, _this5.constructor.Event.CLICK, _this5.config.selector, function (event) { - return _this5.toggle(event); - }); - } else if (trigger !== TRIGGER_MANUAL) { - var eventIn = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSEENTER : _this5.constructor.Event.FOCUSIN; - var eventOut = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSELEAVE : _this5.constructor.Event.FOCUSOUT; - EventHandler.on(_this5._element, eventIn, _this5.config.selector, function (event) { - return _this5._enter(event); - }); - EventHandler.on(_this5._element, eventOut, _this5.config.selector, function (event) { - return _this5._leave(event); - }); - } - }); - - this._hideModalHandler = function () { - if (_this5._element) { - _this5.hide(); - } - }; - - EventHandler.on(this._element.closest("." + CLASS_NAME_MODAL), 'hide.bs.modal', this._hideModalHandler); - - if (this.config.selector) { - this.config = _extends({}, this.config, { - trigger: 'manual', - selector: '' - }); - } else { - this._fixTitle(); - } - }; - - _proto._fixTitle = function _fixTitle() { - var title = this._element.getAttribute('title'); - - var originalTitleType = typeof this._element.getAttribute('data-bs-original-title'); - - if (title || originalTitleType !== 'string') { - this._element.setAttribute('data-bs-original-title', title || ''); - - if (title && !this._element.getAttribute('aria-label') && !this._element.textContent) { - this._element.setAttribute('aria-label', title); - } - - this._element.setAttribute('title', ''); - } - }; - - _proto._enter = function _enter(event, context) { - var dataKey = this.constructor.DATA_KEY; - context = context || Data.getData(event.delegateTarget, dataKey); - - if (!context) { - context = new this.constructor(event.delegateTarget, this._getDelegateConfig()); - Data.setData(event.delegateTarget, dataKey, context); - } - - if (event) { - context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true; - } - - if (context.getTipElement().classList.contains(CLASS_NAME_SHOW$3) || context._hoverState === HOVER_STATE_SHOW) { - context._hoverState = HOVER_STATE_SHOW; - return; - } - - clearTimeout(context._timeout); - context._hoverState = HOVER_STATE_SHOW; - - if (!context.config.delay || !context.config.delay.show) { - context.show(); - return; - } - - context._timeout = setTimeout(function () { - if (context._hoverState === HOVER_STATE_SHOW) { - context.show(); - } - }, context.config.delay.show); - }; - - _proto._leave = function _leave(event, context) { - var dataKey = this.constructor.DATA_KEY; - context = context || Data.getData(event.delegateTarget, dataKey); - - if (!context) { - context = new this.constructor(event.delegateTarget, this._getDelegateConfig()); - Data.setData(event.delegateTarget, dataKey, context); - } - - if (event) { - context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = false; - } - - if (context._isWithActiveTrigger()) { - return; - } - - clearTimeout(context._timeout); - context._hoverState = HOVER_STATE_OUT; - - if (!context.config.delay || !context.config.delay.hide) { - context.hide(); - return; - } - - context._timeout = setTimeout(function () { - if (context._hoverState === HOVER_STATE_OUT) { - context.hide(); - } - }, context.config.delay.hide); - }; - - _proto._isWithActiveTrigger = function _isWithActiveTrigger() { - for (var trigger in this._activeTrigger) { - if (this._activeTrigger[trigger]) { - return true; - } - } - - return false; - }; - - _proto._getConfig = function _getConfig(config) { - var dataAttributes = Manipulator.getDataAttributes(this._element); - Object.keys(dataAttributes).forEach(function (dataAttr) { - if (DISALLOWED_ATTRIBUTES.has(dataAttr)) { - delete dataAttributes[dataAttr]; - } - }); - - if (config && typeof config.container === 'object' && config.container.jquery) { - config.container = config.container[0]; - } - - config = _extends({}, this.constructor.Default, dataAttributes, typeof config === 'object' && config ? config : {}); - - 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(); - } - - typeCheckConfig(NAME$6, config, this.constructor.DefaultType); - - if (config.sanitize) { - config.template = sanitizeHtml(config.template, config.allowList, config.sanitizeFn); - } - - return config; - }; - - _proto._getDelegateConfig = function _getDelegateConfig() { - var config = {}; - - if (this.config) { - for (var key in this.config) { - if (this.constructor.Default[key] !== this.config[key]) { - config[key] = this.config[key]; - } - } - } - - return config; - }; - - _proto._cleanTipClass = function _cleanTipClass() { - var tip = this.getTipElement(); - var tabClass = tip.getAttribute('class').match(BSCLS_PREFIX_REGEX); - - if (tabClass !== null && tabClass.length > 0) { - tabClass.map(function (token) { - return token.trim(); - }).forEach(function (tClass) { - return tip.classList.remove(tClass); - }); - } - }; - - _proto._handlePopperPlacementChange = function _handlePopperPlacementChange(popperData) { - var state = popperData.state; - - if (!state) { - return; - } - - this.tip = state.elements.popper; - - this._cleanTipClass(); - - this._addAttachmentClass(this._getAttachment(state.placement)); - } // Static - ; - - Tooltip.jQueryInterface = function jQueryInterface(config) { - return this.each(function () { - var data = Data.getData(this, DATA_KEY$6); - - var _config = typeof config === 'object' && config; - - if (!data && /dispose|hide/.test(config)) { - return; - } - - if (!data) { - data = new Tooltip(this, _config); - } - - if (typeof config === 'string') { - if (typeof data[config] === 'undefined') { - throw new TypeError("No method named \"" + config + "\""); - } - - data[config](); - } - }); - }; - - _createClass(Tooltip, null, [{ - key: "Default", - get: function get() { - return Default$4; - } - }, { - key: "NAME", - get: function get() { - return NAME$6; - } - }, { - key: "DATA_KEY", - get: function get() { - return DATA_KEY$6; - } - }, { - key: "Event", - get: function get() { - return Event$1; - } - }, { - key: "EVENT_KEY", - get: function get() { - return EVENT_KEY$6; - } - }, { - key: "DefaultType", - get: function get() { - return DefaultType$4; - } - }]); - - return Tooltip; -}(BaseComponent); -/** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - * add .Tooltip to jQuery only if jQuery is present - */ - - -onDOMContentLoaded(function () { - var $ = getjQuery(); - /* istanbul ignore if */ - - if ($) { - var JQUERY_NO_CONFLICT = $.fn[NAME$6]; - $.fn[NAME$6] = Tooltip.jQueryInterface; - $.fn[NAME$6].Constructor = Tooltip; - - $.fn[NAME$6].noConflict = function () { - $.fn[NAME$6] = JQUERY_NO_CONFLICT; - return Tooltip.jQueryInterface; - }; - } -}); - -/** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - -var NAME$7 = 'popover'; -var DATA_KEY$7 = 'bs.popover'; -var EVENT_KEY$7 = "." + DATA_KEY$7; -var CLASS_PREFIX$1 = 'bs-popover'; -var BSCLS_PREFIX_REGEX$1 = new RegExp("(^|\\s)" + CLASS_PREFIX$1 + "\\S+", 'g'); - -var Default$5 = _extends({}, Tooltip.Default, { - placement: 'right', - trigger: 'click', - content: '', - template: '' + '' + '' + '' + '' -}); - -var DefaultType$5 = _extends({}, Tooltip.DefaultType, { - content: '(string|element|function)' -}); - -var Event$2 = { - HIDE: "hide" + EVENT_KEY$7, - HIDDEN: "hidden" + EVENT_KEY$7, - SHOW: "show" + EVENT_KEY$7, - SHOWN: "shown" + EVENT_KEY$7, - INSERTED: "inserted" + EVENT_KEY$7, - CLICK: "click" + EVENT_KEY$7, - FOCUSIN: "focusin" + EVENT_KEY$7, - FOCUSOUT: "focusout" + EVENT_KEY$7, - MOUSEENTER: "mouseenter" + EVENT_KEY$7, - MOUSELEAVE: "mouseleave" + EVENT_KEY$7 -}; -var CLASS_NAME_FADE$2 = 'fade'; -var CLASS_NAME_SHOW$4 = 'show'; -var SELECTOR_TITLE = '.popover-header'; -var SELECTOR_CONTENT = '.popover-body'; -/** - * ------------------------------------------------------------------------ - * Class Definition - * ------------------------------------------------------------------------ - */ - -var Popover = /*#__PURE__*/function (_Tooltip) { - _inheritsLoose(Popover, _Tooltip); - - function Popover() { - return _Tooltip.apply(this, arguments) || this; - } - - var _proto = Popover.prototype; - - // Overrides - _proto.isWithContent = function isWithContent() { - return this.getTitle() || this._getContent(); - }; - - _proto.setContent = function setContent() { - var tip = this.getTipElement(); // we use append for html objects to maintain js events - - this.setElementContent(SelectorEngine.findOne(SELECTOR_TITLE, tip), this.getTitle()); - - var content = this._getContent(); - - if (typeof content === 'function') { - content = content.call(this._element); - } - - this.setElementContent(SelectorEngine.findOne(SELECTOR_CONTENT, tip), content); - tip.classList.remove(CLASS_NAME_FADE$2, CLASS_NAME_SHOW$4); - } // Private - ; - - _proto._addAttachmentClass = function _addAttachmentClass(attachment) { - this.getTipElement().classList.add(CLASS_PREFIX$1 + "-" + this.updateAttachment(attachment)); - }; - - _proto._getContent = function _getContent() { - return this._element.getAttribute('data-bs-content') || this.config.content; - }; - - _proto._cleanTipClass = function _cleanTipClass() { - var tip = this.getTipElement(); - var tabClass = tip.getAttribute('class').match(BSCLS_PREFIX_REGEX$1); - - if (tabClass !== null && tabClass.length > 0) { - tabClass.map(function (token) { - return token.trim(); - }).forEach(function (tClass) { - return tip.classList.remove(tClass); - }); - } - } // Static - ; - - Popover.jQueryInterface = function jQueryInterface(config) { - return this.each(function () { - var data = Data.getData(this, DATA_KEY$7); - - var _config = typeof config === 'object' ? config : null; - - if (!data && /dispose|hide/.test(config)) { - return; - } - - if (!data) { - data = new Popover(this, _config); - Data.setData(this, DATA_KEY$7, data); - } - - if (typeof config === 'string') { - if (typeof data[config] === 'undefined') { - throw new TypeError("No method named \"" + config + "\""); - } - - data[config](); - } - }); - }; - - _createClass(Popover, null, [{ - key: "Default", - // Getters - get: function get() { - return Default$5; - } - }, { - key: "NAME", - get: function get() { - return NAME$7; - } - }, { - key: "DATA_KEY", - get: function get() { - return DATA_KEY$7; - } - }, { - key: "Event", - get: function get() { - return Event$2; - } - }, { - key: "EVENT_KEY", - get: function get() { - return EVENT_KEY$7; - } - }, { - key: "DefaultType", - get: function get() { - return DefaultType$5; - } - }]); - - return Popover; -}(Tooltip); -/** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - * add .Popover to jQuery only if jQuery is present - */ - - -onDOMContentLoaded(function () { - var $ = getjQuery(); - /* istanbul ignore if */ - - if ($) { - var JQUERY_NO_CONFLICT = $.fn[NAME$7]; - $.fn[NAME$7] = Popover.jQueryInterface; - $.fn[NAME$7].Constructor = Popover; - - $.fn[NAME$7].noConflict = function () { - $.fn[NAME$7] = JQUERY_NO_CONFLICT; - return Popover.jQueryInterface; - }; - } -}); - -/** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - -var NAME$8 = 'scrollspy'; -var DATA_KEY$8 = 'bs.scrollspy'; -var EVENT_KEY$8 = "." + DATA_KEY$8; -var DATA_API_KEY$6 = '.data-api'; -var Default$6 = { - offset: 10, - method: 'auto', - target: '' -}; -var DefaultType$6 = { - offset: 'number', - method: 'string', - target: '(string|element)' -}; -var EVENT_ACTIVATE = "activate" + EVENT_KEY$8; -var EVENT_SCROLL = "scroll" + EVENT_KEY$8; -var EVENT_LOAD_DATA_API$1 = "load" + EVENT_KEY$8 + DATA_API_KEY$6; -var CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'; -var CLASS_NAME_ACTIVE$2 = 'active'; -var SELECTOR_DATA_SPY = '[data-bs-spy="scroll"]'; -var SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'; -var SELECTOR_NAV_LINKS = '.nav-link'; -var SELECTOR_NAV_ITEMS = '.nav-item'; -var SELECTOR_LIST_ITEMS = '.list-group-item'; -var SELECTOR_DROPDOWN = '.dropdown'; -var SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'; -var METHOD_OFFSET = 'offset'; -var METHOD_POSITION = 'position'; -/** - * ------------------------------------------------------------------------ - * Class Definition - * ------------------------------------------------------------------------ - */ - -var ScrollSpy = /*#__PURE__*/function (_BaseComponent) { - _inheritsLoose(ScrollSpy, _BaseComponent); - - function ScrollSpy(element, config) { - var _this; - - _this = _BaseComponent.call(this, element) || this; - _this._scrollElement = element.tagName === 'BODY' ? window : element; - _this._config = _this._getConfig(config); - _this._selector = _this._config.target + " " + SELECTOR_NAV_LINKS + ", " + _this._config.target + " " + SELECTOR_LIST_ITEMS + ", " + _this._config.target + " ." + CLASS_NAME_DROPDOWN_ITEM; - _this._offsets = []; - _this._targets = []; - _this._activeTarget = null; - _this._scrollHeight = 0; - EventHandler.on(_this._scrollElement, EVENT_SCROLL, function (event) { - return _this._process(event); - }); - - _this.refresh(); - - _this._process(); - - return _this; - } // Getters - - - var _proto = ScrollSpy.prototype; - - // Public - _proto.refresh = function refresh() { - var _this2 = this; - - var autoMethod = this._scrollElement === this._scrollElement.window ? METHOD_OFFSET : METHOD_POSITION; - var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method; - var offsetBase = offsetMethod === METHOD_POSITION ? this._getScrollTop() : 0; - this._offsets = []; - this._targets = []; - this._scrollHeight = this._getScrollHeight(); - var targets = SelectorEngine.find(this._selector); - targets.map(function (element) { - var targetSelector = getSelectorFromElement(element); - var target = targetSelector ? SelectorEngine.findOne(targetSelector) : null; - - if (target) { - var targetBCR = target.getBoundingClientRect(); - - if (targetBCR.width || targetBCR.height) { - return [Manipulator[offsetMethod](target).top + offsetBase, targetSelector]; - } - } - - return null; - }).filter(function (item) { - return item; - }).sort(function (a, b) { - return a[0] - b[0]; - }).forEach(function (item) { - _this2._offsets.push(item[0]); - - _this2._targets.push(item[1]); - }); - }; - - _proto.dispose = function dispose() { - _BaseComponent.prototype.dispose.call(this); - - EventHandler.off(this._scrollElement, EVENT_KEY$8); - this._scrollElement = null; - this._config = null; - this._selector = null; - this._offsets = null; - this._targets = null; - this._activeTarget = null; - this._scrollHeight = null; - } // Private - ; - - _proto._getConfig = function _getConfig(config) { - config = _extends({}, Default$6, typeof config === 'object' && config ? config : {}); - - if (typeof config.target !== 'string' && isElement(config.target)) { - var id = config.target.id; - - if (!id) { - id = getUID(NAME$8); - config.target.id = id; - } - - config.target = "#" + id; - } - - typeCheckConfig(NAME$8, config, DefaultType$6); - return config; - }; - - _proto._getScrollTop = function _getScrollTop() { - return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop; - }; - - _proto._getScrollHeight = function _getScrollHeight() { - return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight); - }; - - _proto._getOffsetHeight = function _getOffsetHeight() { - return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height; - }; - - _proto._process = function _process() { - var scrollTop = this._getScrollTop() + this._config.offset; - - var scrollHeight = this._getScrollHeight(); - - var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight(); - - if (this._scrollHeight !== scrollHeight) { - this.refresh(); - } - - if (scrollTop >= maxScroll) { - var target = this._targets[this._targets.length - 1]; - - if (this._activeTarget !== target) { - this._activate(target); - } - - return; - } - - if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) { - this._activeTarget = null; - - this._clear(); - - return; - } - - for (var i = this._offsets.length; i--;) { - var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]); - - if (isActiveTarget) { - this._activate(this._targets[i]); - } - } - }; - - _proto._activate = function _activate(target) { - this._activeTarget = target; - - this._clear(); - - var queries = this._selector.split(',').map(function (selector) { - return selector + "[data-bs-target=\"" + target + "\"]," + selector + "[href=\"" + target + "\"]"; - }); - - var link = SelectorEngine.findOne(queries.join(',')); - - if (link.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) { - SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE, link.closest(SELECTOR_DROPDOWN)).classList.add(CLASS_NAME_ACTIVE$2); - link.classList.add(CLASS_NAME_ACTIVE$2); - } else { - // Set triggered link as active - link.classList.add(CLASS_NAME_ACTIVE$2); - SelectorEngine.parents(link, SELECTOR_NAV_LIST_GROUP).forEach(function (listGroup) { - // Set triggered links parents as active - // With both and markup a parent is the previous sibling of any nav ancestor - SelectorEngine.prev(listGroup, SELECTOR_NAV_LINKS + ", " + SELECTOR_LIST_ITEMS).forEach(function (item) { - return item.classList.add(CLASS_NAME_ACTIVE$2); - }); // Handle special case when .nav-link is inside .nav-item - - SelectorEngine.prev(listGroup, SELECTOR_NAV_ITEMS).forEach(function (navItem) { - SelectorEngine.children(navItem, SELECTOR_NAV_LINKS).forEach(function (item) { - return item.classList.add(CLASS_NAME_ACTIVE$2); - }); - }); - }); - } - - EventHandler.trigger(this._scrollElement, EVENT_ACTIVATE, { - relatedTarget: target - }); - }; - - _proto._clear = function _clear() { - SelectorEngine.find(this._selector).filter(function (node) { - return node.classList.contains(CLASS_NAME_ACTIVE$2); - }).forEach(function (node) { - return node.classList.remove(CLASS_NAME_ACTIVE$2); - }); - } // Static - ; - - ScrollSpy.jQueryInterface = function jQueryInterface(config) { - return this.each(function () { - var data = Data.getData(this, DATA_KEY$8); - - var _config = typeof config === 'object' && config; - - if (!data) { - data = new ScrollSpy(this, _config); - } - - if (typeof config === 'string') { - if (typeof data[config] === 'undefined') { - throw new TypeError("No method named \"" + config + "\""); - } - - data[config](); - } - }); - }; - - _createClass(ScrollSpy, null, [{ - key: "Default", - get: function get() { - return Default$6; - } - }, { - key: "DATA_KEY", - get: function get() { - return DATA_KEY$8; - } - }]); - - return ScrollSpy; -}(BaseComponent); -/** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ - - -EventHandler.on(window, EVENT_LOAD_DATA_API$1, function () { - SelectorEngine.find(SELECTOR_DATA_SPY).forEach(function (spy) { - return new ScrollSpy(spy, Manipulator.getDataAttributes(spy)); - }); -}); -/** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - * add .ScrollSpy to jQuery only if jQuery is present - */ - -onDOMContentLoaded(function () { - var $ = getjQuery(); - /* istanbul ignore if */ - - if ($) { - var JQUERY_NO_CONFLICT = $.fn[NAME$8]; - $.fn[NAME$8] = ScrollSpy.jQueryInterface; - $.fn[NAME$8].Constructor = ScrollSpy; - - $.fn[NAME$8].noConflict = function () { - $.fn[NAME$8] = JQUERY_NO_CONFLICT; - return ScrollSpy.jQueryInterface; - }; - } -}); - -/** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - -var NAME$9 = 'tab'; -var DATA_KEY$9 = 'bs.tab'; -var EVENT_KEY$9 = "." + DATA_KEY$9; -var DATA_API_KEY$7 = '.data-api'; -var EVENT_HIDE$3 = "hide" + EVENT_KEY$9; -var EVENT_HIDDEN$3 = "hidden" + EVENT_KEY$9; -var EVENT_SHOW$3 = "show" + EVENT_KEY$9; -var EVENT_SHOWN$3 = "shown" + EVENT_KEY$9; -var EVENT_CLICK_DATA_API$6 = "click" + EVENT_KEY$9 + DATA_API_KEY$7; -var CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu'; -var CLASS_NAME_ACTIVE$3 = 'active'; -var CLASS_NAME_DISABLED$1 = 'disabled'; -var CLASS_NAME_FADE$3 = 'fade'; -var CLASS_NAME_SHOW$5 = 'show'; -var SELECTOR_DROPDOWN$1 = '.dropdown'; -var SELECTOR_NAV_LIST_GROUP$1 = '.nav, .list-group'; -var SELECTOR_ACTIVE$1 = '.active'; -var SELECTOR_ACTIVE_UL = ':scope > li > .active'; -var SELECTOR_DATA_TOGGLE$4 = '[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]'; -var SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle'; -var SELECTOR_DROPDOWN_ACTIVE_CHILD = ':scope > .dropdown-menu .active'; -/** - * ------------------------------------------------------------------------ - * Class Definition - * ------------------------------------------------------------------------ - */ - -var Tab = /*#__PURE__*/function (_BaseComponent) { - _inheritsLoose(Tab, _BaseComponent); - - function Tab() { - return _BaseComponent.apply(this, arguments) || this; - } - - var _proto = Tab.prototype; - - // Public - _proto.show = function show() { - var _this = this; - - if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && this._element.classList.contains(CLASS_NAME_ACTIVE$3) || this._element.classList.contains(CLASS_NAME_DISABLED$1)) { - return; - } - - var previous; - var target = getElementFromSelector(this._element); - - var listElement = this._element.closest(SELECTOR_NAV_LIST_GROUP$1); - - if (listElement) { - var itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE$1; - previous = SelectorEngine.find(itemSelector, listElement); - previous = previous[previous.length - 1]; - } - - var hideEvent = null; - - if (previous) { - hideEvent = EventHandler.trigger(previous, EVENT_HIDE$3, { - relatedTarget: this._element - }); - } - - var showEvent = EventHandler.trigger(this._element, EVENT_SHOW$3, { - relatedTarget: previous - }); - - if (showEvent.defaultPrevented || hideEvent !== null && hideEvent.defaultPrevented) { - return; - } - - this._activate(this._element, listElement); - - var complete = function complete() { - EventHandler.trigger(previous, EVENT_HIDDEN$3, { - relatedTarget: _this._element - }); - EventHandler.trigger(_this._element, EVENT_SHOWN$3, { - relatedTarget: previous - }); - }; - - if (target) { - this._activate(target, target.parentNode, complete); - } else { - complete(); - } - } // Private - ; - - _proto._activate = function _activate(element, container, callback) { - var _this2 = this; - - var activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ? SelectorEngine.find(SELECTOR_ACTIVE_UL, container) : SelectorEngine.children(container, SELECTOR_ACTIVE$1); - var active = activeElements[0]; - var isTransitioning = callback && active && active.classList.contains(CLASS_NAME_FADE$3); - - var complete = function complete() { - return _this2._transitionComplete(element, active, callback); - }; - - if (active && isTransitioning) { - var transitionDuration = getTransitionDurationFromElement(active); - active.classList.remove(CLASS_NAME_SHOW$5); - EventHandler.one(active, TRANSITION_END, complete); - emulateTransitionEnd(active, transitionDuration); - } else { - complete(); - } - }; - - _proto._transitionComplete = function _transitionComplete(element, active, callback) { - if (active) { - active.classList.remove(CLASS_NAME_ACTIVE$3); - var dropdownChild = SelectorEngine.findOne(SELECTOR_DROPDOWN_ACTIVE_CHILD, active.parentNode); - - if (dropdownChild) { - dropdownChild.classList.remove(CLASS_NAME_ACTIVE$3); - } - - if (active.getAttribute('role') === 'tab') { - active.setAttribute('aria-selected', false); - } - } - - element.classList.add(CLASS_NAME_ACTIVE$3); - - if (element.getAttribute('role') === 'tab') { - element.setAttribute('aria-selected', true); - } - - reflow(element); - - if (element.classList.contains(CLASS_NAME_FADE$3)) { - element.classList.add(CLASS_NAME_SHOW$5); - } - - if (element.parentNode && element.parentNode.classList.contains(CLASS_NAME_DROPDOWN_MENU)) { - var dropdownElement = element.closest(SELECTOR_DROPDOWN$1); - - if (dropdownElement) { - SelectorEngine.find(SELECTOR_DROPDOWN_TOGGLE$1).forEach(function (dropdown) { - return dropdown.classList.add(CLASS_NAME_ACTIVE$3); - }); - } - - element.setAttribute('aria-expanded', true); - } - - if (callback) { - callback(); - } - } // Static - ; - - Tab.jQueryInterface = function jQueryInterface(config) { - return this.each(function () { - var data = Data.getData(this, DATA_KEY$9) || new Tab(this); - - if (typeof config === 'string') { - if (typeof data[config] === 'undefined') { - throw new TypeError("No method named \"" + config + "\""); - } - - data[config](); - } - }); - }; - - _createClass(Tab, null, [{ - key: "DATA_KEY", - // Getters - get: function get() { - return DATA_KEY$9; - } - }]); - - return Tab; -}(BaseComponent); -/** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ - - -EventHandler.on(document, EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$4, function (event) { - event.preventDefault(); - var data = Data.getData(this, DATA_KEY$9) || new Tab(this); - data.show(); -}); -/** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - * add .Tab to jQuery only if jQuery is present - */ - -onDOMContentLoaded(function () { - var $ = getjQuery(); - /* istanbul ignore if */ - - if ($) { - var JQUERY_NO_CONFLICT = $.fn[NAME$9]; - $.fn[NAME$9] = Tab.jQueryInterface; - $.fn[NAME$9].Constructor = Tab; - - $.fn[NAME$9].noConflict = function () { - $.fn[NAME$9] = JQUERY_NO_CONFLICT; - return Tab.jQueryInterface; - }; - } -}); - -/** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - -var NAME$a = 'toast'; -var DATA_KEY$a = 'bs.toast'; -var EVENT_KEY$a = "." + DATA_KEY$a; -var EVENT_CLICK_DISMISS$1 = "click.dismiss" + EVENT_KEY$a; -var EVENT_HIDE$4 = "hide" + EVENT_KEY$a; -var EVENT_HIDDEN$4 = "hidden" + EVENT_KEY$a; -var EVENT_SHOW$4 = "show" + EVENT_KEY$a; -var EVENT_SHOWN$4 = "shown" + EVENT_KEY$a; -var CLASS_NAME_FADE$4 = 'fade'; -var CLASS_NAME_HIDE = 'hide'; -var CLASS_NAME_SHOW$6 = 'show'; -var CLASS_NAME_SHOWING = 'showing'; -var DefaultType$7 = { - animation: 'boolean', - autohide: 'boolean', - delay: 'number' -}; -var Default$7 = { - animation: true, - autohide: true, - delay: 5000 -}; -var SELECTOR_DATA_DISMISS$1 = '[data-bs-dismiss="toast"]'; -/** - * ------------------------------------------------------------------------ - * Class Definition - * ------------------------------------------------------------------------ - */ - -var Toast = /*#__PURE__*/function (_BaseComponent) { - _inheritsLoose(Toast, _BaseComponent); - - function Toast(element, config) { - var _this; - - _this = _BaseComponent.call(this, element) || this; - _this._config = _this._getConfig(config); - _this._timeout = null; - - _this._setListeners(); - - return _this; - } // Getters - - - var _proto = Toast.prototype; - - // Public - _proto.show = function show() { - var _this2 = this; - - var showEvent = EventHandler.trigger(this._element, EVENT_SHOW$4); - - if (showEvent.defaultPrevented) { - return; - } - - this._clearTimeout(); - - if (this._config.animation) { - this._element.classList.add(CLASS_NAME_FADE$4); - } - - var complete = function complete() { - _this2._element.classList.remove(CLASS_NAME_SHOWING); - - _this2._element.classList.add(CLASS_NAME_SHOW$6); - - EventHandler.trigger(_this2._element, EVENT_SHOWN$4); - - if (_this2._config.autohide) { - _this2._timeout = setTimeout(function () { - _this2.hide(); - }, _this2._config.delay); - } - }; - - this._element.classList.remove(CLASS_NAME_HIDE); - - reflow(this._element); - - this._element.classList.add(CLASS_NAME_SHOWING); - - if (this._config.animation) { - var transitionDuration = getTransitionDurationFromElement(this._element); - EventHandler.one(this._element, TRANSITION_END, complete); - emulateTransitionEnd(this._element, transitionDuration); - } else { - complete(); - } - }; - - _proto.hide = function hide() { - var _this3 = this; - - if (!this._element.classList.contains(CLASS_NAME_SHOW$6)) { - return; - } - - var hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$4); - - if (hideEvent.defaultPrevented) { - return; - } - - var complete = function complete() { - _this3._element.classList.add(CLASS_NAME_HIDE); - - EventHandler.trigger(_this3._element, EVENT_HIDDEN$4); - }; - - this._element.classList.remove(CLASS_NAME_SHOW$6); - - if (this._config.animation) { - var transitionDuration = getTransitionDurationFromElement(this._element); - EventHandler.one(this._element, TRANSITION_END, complete); - emulateTransitionEnd(this._element, transitionDuration); - } else { - complete(); - } - }; - - _proto.dispose = function dispose() { - this._clearTimeout(); - - if (this._element.classList.contains(CLASS_NAME_SHOW$6)) { - this._element.classList.remove(CLASS_NAME_SHOW$6); - } - - EventHandler.off(this._element, EVENT_CLICK_DISMISS$1); - - _BaseComponent.prototype.dispose.call(this); - - this._config = null; - } // Private - ; - - _proto._getConfig = function _getConfig(config) { - config = _extends({}, Default$7, Manipulator.getDataAttributes(this._element), typeof config === 'object' && config ? config : {}); - typeCheckConfig(NAME$a, config, this.constructor.DefaultType); - return config; - }; - - _proto._setListeners = function _setListeners() { - var _this4 = this; - - EventHandler.on(this._element, EVENT_CLICK_DISMISS$1, SELECTOR_DATA_DISMISS$1, function () { - return _this4.hide(); - }); - }; - - _proto._clearTimeout = function _clearTimeout() { - clearTimeout(this._timeout); - this._timeout = null; - } // Static - ; - - Toast.jQueryInterface = function jQueryInterface(config) { - return this.each(function () { - var data = Data.getData(this, DATA_KEY$a); - - var _config = typeof config === 'object' && config; - - if (!data) { - data = new Toast(this, _config); - } - - if (typeof config === 'string') { - if (typeof data[config] === 'undefined') { - throw new TypeError("No method named \"" + config + "\""); - } - - data[config](this); - } - }); - }; - - _createClass(Toast, null, [{ - key: "DefaultType", - get: function get() { - return DefaultType$7; - } - }, { - key: "Default", - get: function get() { - return Default$7; - } - }, { - key: "DATA_KEY", - get: function get() { - return DATA_KEY$a; - } - }]); - - return Toast; -}(BaseComponent); -/** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - * add .Toast to jQuery only if jQuery is present - */ - - -onDOMContentLoaded(function () { - var $ = getjQuery(); - /* istanbul ignore if */ - - if ($) { - var JQUERY_NO_CONFLICT = $.fn[NAME$a]; - $.fn[NAME$a] = Toast.jQueryInterface; - $.fn[NAME$a].Constructor = Toast; - - $.fn[NAME$a].noConflict = function () { - $.fn[NAME$a] = JQUERY_NO_CONFLICT; - return Toast.jQueryInterface; - }; - } -}); - -export { Alert, Button, Carousel, Collapse, Dropdown, Modal, Popover, ScrollSpy, Tab, Toast, Tooltip }; -//# sourceMappingURL=bootstrap.esm.js.map diff --git a/dist/js/bootstrap.esm.js.map b/dist/js/bootstrap.esm.js.map deleted file mode 100644 index 61be20c50..000000000 --- a/dist/js/bootstrap.esm.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"bootstrap.esm.js","sources":["../../js/src/util/index.js","../../js/src/dom/data.js","../../js/src/dom/event-handler.js","../../js/src/base-component.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/dom/manipulator.js","../../js/src/dom/selector-engine.js","../../js/src/carousel.js","../../js/src/collapse.js","../../js/src/dropdown.js","../../js/src/modal.js","../../js/src/util/sanitizer.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/toast.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1000000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n// Shoutout AngusCroll (https://goo.gl/pxwQGp)\nconst toType = obj => {\n if (obj === null || obj === undefined) {\n return `${obj}`\n }\n\n return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\n/**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\nconst getUID = prefix => {\n do {\n prefix += Math.floor(Math.random() * MAX_UID)\n } while (document.getElementById(prefix))\n\n return prefix\n}\n\nconst getSelector = element => {\n let selector = element.getAttribute('data-bs-target')\n\n if (!selector || selector === '#') {\n const hrefAttr = element.getAttribute('href')\n\n selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null\n }\n\n return selector\n}\n\nconst getSelectorFromElement = element => {\n const selector = getSelector(element)\n\n if (selector) {\n return document.querySelector(selector) ? selector : null\n }\n\n return null\n}\n\nconst getElementFromSelector = element => {\n const selector = getSelector(element)\n\n return selector ? document.querySelector(selector) : null\n}\n\nconst getTransitionDurationFromElement = element => {\n if (!element) {\n return 0\n }\n\n // Get transition-duration of the element\n let { transitionDuration, transitionDelay } = window.getComputedStyle(element)\n\n const floatTransitionDuration = Number.parseFloat(transitionDuration)\n const floatTransitionDelay = Number.parseFloat(transitionDelay)\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0]\n transitionDelay = transitionDelay.split(',')[0]\n\n return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = element => {\n element.dispatchEvent(new Event(TRANSITION_END))\n}\n\nconst isElement = obj => (obj[0] || obj).nodeType\n\nconst emulateTransitionEnd = (element, duration) => {\n let called = false\n const durationPadding = 5\n const emulatedDuration = duration + durationPadding\n\n function listener() {\n called = true\n element.removeEventListener(TRANSITION_END, listener)\n }\n\n element.addEventListener(TRANSITION_END, listener)\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(element)\n }\n }, emulatedDuration)\n}\n\nconst typeCheckConfig = (componentName, config, configTypes) => {\n Object.keys(configTypes).forEach(property => {\n const expectedTypes = configTypes[property]\n const value = config[property]\n const valueType = value && isElement(value) ?\n 'element' :\n toType(value)\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new Error(\n `${componentName.toUpperCase()}: ` +\n `Option \"${property}\" provided type \"${valueType}\" ` +\n `but expected type \"${expectedTypes}\".`)\n }\n })\n}\n\nconst isVisible = element => {\n if (!element) {\n return false\n }\n\n if (element.style && element.parentNode && element.parentNode.style) {\n const elementStyle = getComputedStyle(element)\n const parentNodeStyle = getComputedStyle(element.parentNode)\n\n return elementStyle.display !== 'none' &&\n parentNodeStyle.display !== 'none' &&\n elementStyle.visibility !== 'hidden'\n }\n\n return false\n}\n\nconst findShadowRoot = element => {\n if (!document.documentElement.attachShadow) {\n return null\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode()\n return root instanceof ShadowRoot ? root : null\n }\n\n if (element instanceof ShadowRoot) {\n return element\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null\n }\n\n return findShadowRoot(element.parentNode)\n}\n\nconst noop = () => function () {}\n\nconst reflow = element => element.offsetHeight\n\nconst getjQuery = () => {\n const { jQuery } = window\n\n if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n return jQuery\n }\n\n return null\n}\n\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', callback)\n } else {\n callback()\n }\n}\n\nconst isRTL = document.documentElement.dir === 'rtl'\n\nexport {\n TRANSITION_END,\n getUID,\n getSelectorFromElement,\n getElementFromSelector,\n getTransitionDurationFromElement,\n triggerTransitionEnd,\n isElement,\n emulateTransitionEnd,\n typeCheckConfig,\n isVisible,\n findShadowRoot,\n noop,\n reflow,\n getjQuery,\n onDOMContentLoaded,\n isRTL\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst mapData = (() => {\n const storeData = {}\n let id = 1\n return {\n set(element, key, data) {\n if (typeof element.bsKey === 'undefined') {\n element.bsKey = {\n key,\n id\n }\n id++\n }\n\n storeData[element.bsKey.id] = data\n },\n get(element, key) {\n if (!element || typeof element.bsKey === 'undefined') {\n return null\n }\n\n const keyProperties = element.bsKey\n if (keyProperties.key === key) {\n return storeData[keyProperties.id]\n }\n\n return null\n },\n delete(element, key) {\n if (typeof element.bsKey === 'undefined') {\n return\n }\n\n const keyProperties = element.bsKey\n if (keyProperties.key === key) {\n delete storeData[keyProperties.id]\n delete element.bsKey\n }\n }\n }\n})()\n\nconst Data = {\n setData(instance, key, data) {\n mapData.set(instance, key, data)\n },\n getData(instance, key) {\n return mapData.get(instance, key)\n },\n removeData(instance, key) {\n mapData.delete(instance, key)\n }\n}\n\nexport default Data\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery } from '../util/index'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/\nconst stripNameRegex = /\\..*/\nconst stripUidRegex = /::\\d+$/\nconst eventRegistry = {} // Events storage\nlet uidEvent = 1\nconst customEvents = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout'\n}\nconst nativeEvents = new Set([\n 'click',\n 'dblclick',\n 'mouseup',\n 'mousedown',\n 'contextmenu',\n 'mousewheel',\n 'DOMMouseScroll',\n 'mouseover',\n 'mouseout',\n 'mousemove',\n 'selectstart',\n 'selectend',\n 'keydown',\n 'keypress',\n 'keyup',\n 'orientationchange',\n 'touchstart',\n 'touchmove',\n 'touchend',\n 'touchcancel',\n 'pointerdown',\n 'pointermove',\n 'pointerup',\n 'pointerleave',\n 'pointercancel',\n 'gesturestart',\n 'gesturechange',\n 'gestureend',\n 'focus',\n 'blur',\n 'change',\n 'reset',\n 'select',\n 'submit',\n 'focusin',\n 'focusout',\n 'load',\n 'unload',\n 'beforeunload',\n 'resize',\n 'move',\n 'DOMContentLoaded',\n 'readystatechange',\n 'error',\n 'abort',\n 'scroll'\n])\n\n/**\n * ------------------------------------------------------------------------\n * Private methods\n * ------------------------------------------------------------------------\n */\n\nfunction getUidEvent(element, uid) {\n return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\n}\n\nfunction getEvent(element) {\n const uid = getUidEvent(element)\n\n element.uidEvent = uid\n eventRegistry[uid] = eventRegistry[uid] || {}\n\n return eventRegistry[uid]\n}\n\nfunction bootstrapHandler(element, fn) {\n return function handler(event) {\n event.delegateTarget = element\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, fn)\n }\n\n return fn.apply(element, [event])\n }\n}\n\nfunction bootstrapDelegationHandler(element, selector, fn) {\n return function handler(event) {\n const domElements = element.querySelectorAll(selector)\n\n for (let { target } = event; target && target !== this; target = target.parentNode) {\n for (let i = domElements.length; i--;) {\n if (domElements[i] === target) {\n event.delegateTarget = target\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, fn)\n }\n\n return fn.apply(target, [event])\n }\n }\n }\n\n // To please ESLint\n return null\n }\n}\n\nfunction findHandler(events, handler, delegationSelector = null) {\n const uidEventList = Object.keys(events)\n\n for (let i = 0, len = uidEventList.length; i < len; i++) {\n const event = events[uidEventList[i]]\n\n if (event.originalHandler === handler && event.delegationSelector === delegationSelector) {\n return event\n }\n }\n\n return null\n}\n\nfunction normalizeParams(originalTypeEvent, handler, delegationFn) {\n const delegation = typeof handler === 'string'\n const originalHandler = delegation ? delegationFn : handler\n\n // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n let typeEvent = originalTypeEvent.replace(stripNameRegex, '')\n const custom = customEvents[typeEvent]\n\n if (custom) {\n typeEvent = custom\n }\n\n const isNative = nativeEvents.has(typeEvent)\n\n if (!isNative) {\n typeEvent = originalTypeEvent\n }\n\n return [delegation, originalHandler, typeEvent]\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFn, oneOff) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n if (!handler) {\n handler = delegationFn\n delegationFn = null\n }\n\n const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn)\n const events = getEvent(element)\n const handlers = events[typeEvent] || (events[typeEvent] = {})\n const previousFn = findHandler(handlers, originalHandler, delegation ? handler : null)\n\n if (previousFn) {\n previousFn.oneOff = previousFn.oneOff && oneOff\n\n return\n }\n\n const uid = getUidEvent(originalHandler, originalTypeEvent.replace(namespaceRegex, ''))\n const fn = delegation ?\n bootstrapDelegationHandler(element, handler, delegationFn) :\n bootstrapHandler(element, handler)\n\n fn.delegationSelector = delegation ? handler : null\n fn.originalHandler = originalHandler\n fn.oneOff = oneOff\n fn.uidEvent = uid\n handlers[uid] = fn\n\n element.addEventListener(typeEvent, fn, delegation)\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n const fn = findHandler(events[typeEvent], handler, delegationSelector)\n\n if (!fn) {\n return\n }\n\n element.removeEventListener(typeEvent, fn, Boolean(delegationSelector))\n delete events[typeEvent][fn.uidEvent]\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n const storeElementEvent = events[typeEvent] || {}\n\n Object.keys(storeElementEvent).forEach(handlerKey => {\n if (handlerKey.includes(namespace)) {\n const event = storeElementEvent[handlerKey]\n\n removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector)\n }\n })\n}\n\nconst EventHandler = {\n on(element, event, handler, delegationFn) {\n addHandler(element, event, handler, delegationFn, false)\n },\n\n one(element, event, handler, delegationFn) {\n addHandler(element, event, handler, delegationFn, true)\n },\n\n off(element, originalTypeEvent, handler, delegationFn) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn)\n const inNamespace = typeEvent !== originalTypeEvent\n const events = getEvent(element)\n const isNamespace = originalTypeEvent.startsWith('.')\n\n if (typeof originalHandler !== 'undefined') {\n // Simplest case: handler is passed, remove that listener ONLY.\n if (!events || !events[typeEvent]) {\n return\n }\n\n removeHandler(element, events, typeEvent, originalHandler, delegation ? handler : null)\n return\n }\n\n if (isNamespace) {\n Object.keys(events).forEach(elementEvent => {\n removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\n })\n }\n\n const storeElementEvent = events[typeEvent] || {}\n Object.keys(storeElementEvent).forEach(keyHandlers => {\n const handlerKey = keyHandlers.replace(stripUidRegex, '')\n\n if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n const event = storeElementEvent[keyHandlers]\n\n removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector)\n }\n })\n },\n\n trigger(element, event, args) {\n if (typeof event !== 'string' || !element) {\n return null\n }\n\n const $ = getjQuery()\n const typeEvent = event.replace(stripNameRegex, '')\n const inNamespace = event !== typeEvent\n const isNative = nativeEvents.has(typeEvent)\n\n let jQueryEvent\n let bubbles = true\n let nativeDispatch = true\n let defaultPrevented = false\n let evt = null\n\n if (inNamespace && $) {\n jQueryEvent = $.Event(event, args)\n\n $(element).trigger(jQueryEvent)\n bubbles = !jQueryEvent.isPropagationStopped()\n nativeDispatch = !jQueryEvent.isImmediatePropagationStopped()\n defaultPrevented = jQueryEvent.isDefaultPrevented()\n }\n\n if (isNative) {\n evt = document.createEvent('HTMLEvents')\n evt.initEvent(typeEvent, bubbles, true)\n } else {\n evt = new CustomEvent(event, {\n bubbles,\n cancelable: true\n })\n }\n\n // merge custom information in our event\n if (typeof args !== 'undefined') {\n Object.keys(args).forEach(key => {\n Object.defineProperty(evt, key, {\n get() {\n return args[key]\n }\n })\n })\n }\n\n if (defaultPrevented) {\n evt.preventDefault()\n }\n\n if (nativeDispatch) {\n element.dispatchEvent(evt)\n }\n\n if (evt.defaultPrevented && typeof jQueryEvent !== 'undefined') {\n jQueryEvent.preventDefault()\n }\n\n return evt\n }\n}\n\nexport default EventHandler\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst VERSION = '5.0.0-beta1'\n\nclass BaseComponent {\n constructor(element) {\n if (!element) {\n return\n }\n\n this._element = element\n Data.setData(element, this.constructor.DATA_KEY, this)\n }\n\n dispose() {\n Data.removeData(this._element, this.constructor.DATA_KEY)\n this._element = null\n }\n\n /** Static */\n\n static getInstance(element) {\n return Data.getData(element, this.DATA_KEY)\n }\n\n static get VERSION() {\n return VERSION\n }\n}\n\nexport default BaseComponent\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n getjQuery,\n onDOMContentLoaded,\n TRANSITION_END,\n emulateTransitionEnd,\n getElementFromSelector,\n getTransitionDurationFromElement\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'alert'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst SELECTOR_DISMISS = '[data-bs-dismiss=\"alert\"]'\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`\nconst EVENT_CLOSED = `closed${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASSNAME_ALERT = 'alert'\nconst CLASSNAME_FADE = 'fade'\nconst CLASSNAME_SHOW = 'show'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Alert extends BaseComponent {\n // Getters\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n close(element) {\n const rootElement = element ? this._getRootElement(element) : this._element\n const customEvent = this._triggerCloseEvent(rootElement)\n\n if (customEvent === null || customEvent.defaultPrevented) {\n return\n }\n\n this._removeElement(rootElement)\n }\n\n // Private\n\n _getRootElement(element) {\n return getElementFromSelector(element) || element.closest(`.${CLASSNAME_ALERT}`)\n }\n\n _triggerCloseEvent(element) {\n return EventHandler.trigger(element, EVENT_CLOSE)\n }\n\n _removeElement(element) {\n element.classList.remove(CLASSNAME_SHOW)\n\n if (!element.classList.contains(CLASSNAME_FADE)) {\n this._destroyElement(element)\n return\n }\n\n const transitionDuration = getTransitionDurationFromElement(element)\n\n EventHandler.one(element, TRANSITION_END, () => this._destroyElement(element))\n emulateTransitionEnd(element, transitionDuration)\n }\n\n _destroyElement(element) {\n if (element.parentNode) {\n element.parentNode.removeChild(element)\n }\n\n EventHandler.trigger(element, EVENT_CLOSED)\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY)\n\n if (!data) {\n data = new Alert(this)\n }\n\n if (config === 'close') {\n data[config](this)\n }\n })\n }\n\n static handleDismiss(alertInstance) {\n return function (event) {\n if (event) {\n event.preventDefault()\n }\n\n alertInstance.close(this)\n }\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DISMISS, Alert.handleDismiss(new Alert()))\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Alert to jQuery only if jQuery is present\n */\n\nonDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Alert.jQueryInterface\n $.fn[NAME].Constructor = Alert\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Alert.jQueryInterface\n }\n }\n})\n\nexport default Alert\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery, onDOMContentLoaded } from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'button'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"button\"]'\n\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Button extends BaseComponent {\n // Getters\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n toggle() {\n // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE))\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY)\n\n if (!data) {\n data = new Button(this)\n }\n\n if (config === 'toggle') {\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, event => {\n event.preventDefault()\n\n const button = event.target.closest(SELECTOR_DATA_TOGGLE)\n\n let data = Data.getData(button, DATA_KEY)\n if (!data) {\n data = new Button(button)\n }\n\n data.toggle()\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Button to jQuery only if jQuery is present\n */\n\nonDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Button.jQueryInterface\n $.fn[NAME].Constructor = Button\n\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Button.jQueryInterface\n }\n }\n})\n\nexport default Button\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(val) {\n if (val === 'true') {\n return true\n }\n\n if (val === 'false') {\n return false\n }\n\n if (val === Number(val).toString()) {\n return Number(val)\n }\n\n if (val === '' || val === 'null') {\n return null\n }\n\n return val\n}\n\nfunction normalizeDataKey(key) {\n return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`)\n}\n\nconst Manipulator = {\n setDataAttribute(element, key, value) {\n element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value)\n },\n\n removeDataAttribute(element, key) {\n element.removeAttribute(`data-bs-${normalizeDataKey(key)}`)\n },\n\n getDataAttributes(element) {\n if (!element) {\n return {}\n }\n\n const attributes = {}\n\n Object.keys(element.dataset)\n .filter(key => key.startsWith('bs'))\n .forEach(key => {\n let pureKey = key.replace(/^bs/, '')\n pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length)\n attributes[pureKey] = normalizeData(element.dataset[key])\n })\n\n return attributes\n },\n\n getDataAttribute(element, key) {\n return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`))\n },\n\n offset(element) {\n const rect = element.getBoundingClientRect()\n\n return {\n top: rect.top + document.body.scrollTop,\n left: rect.left + document.body.scrollLeft\n }\n },\n\n position(element) {\n return {\n top: element.offsetTop,\n left: element.offsetLeft\n }\n }\n}\n\nexport default Manipulator\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NODE_TEXT = 3\n\nconst SelectorEngine = {\n matches(element, selector) {\n return element.matches(selector)\n },\n\n find(selector, element = document.documentElement) {\n return [].concat(...Element.prototype.querySelectorAll.call(element, selector))\n },\n\n findOne(selector, element = document.documentElement) {\n return Element.prototype.querySelector.call(element, selector)\n },\n\n children(element, selector) {\n const children = [].concat(...element.children)\n\n return children.filter(child => child.matches(selector))\n },\n\n parents(element, selector) {\n const parents = []\n\n let ancestor = element.parentNode\n\n while (ancestor && ancestor.nodeType === Node.ELEMENT_NODE && ancestor.nodeType !== NODE_TEXT) {\n if (this.matches(ancestor, selector)) {\n parents.push(ancestor)\n }\n\n ancestor = ancestor.parentNode\n }\n\n return parents\n },\n\n prev(element, selector) {\n let previous = element.previousElementSibling\n\n while (previous) {\n if (previous.matches(selector)) {\n return [previous]\n }\n\n previous = previous.previousElementSibling\n }\n\n return []\n },\n\n next(element, selector) {\n let next = element.nextElementSibling\n\n while (next) {\n if (this.matches(next, selector)) {\n return [next]\n }\n\n next = next.nextElementSibling\n }\n\n return []\n }\n}\n\nexport default SelectorEngine\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n getjQuery,\n onDOMContentLoaded,\n TRANSITION_END,\n emulateTransitionEnd,\n getElementFromSelector,\n getTransitionDurationFromElement,\n isVisible,\n reflow,\n triggerTransitionEnd,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'carousel'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n interval: 5000,\n keyboard: true,\n slide: false,\n pause: 'hover',\n wrap: true,\n touch: true\n}\n\nconst DefaultType = {\n interval: '(number|boolean)',\n keyboard: 'boolean',\n slide: '(boolean|string)',\n pause: '(string|boolean)',\n wrap: 'boolean',\n touch: 'boolean'\n}\n\nconst DIRECTION_NEXT = 'next'\nconst DIRECTION_PREV = 'prev'\nconst DIRECTION_LEFT = 'left'\nconst DIRECTION_RIGHT = 'right'\n\nconst EVENT_SLIDE = `slide${EVENT_KEY}`\nconst EVENT_SLID = `slid${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY}`\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_CAROUSEL = 'carousel'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_SLIDE = 'slide'\nconst CLASS_NAME_END = 'carousel-item-end'\nconst CLASS_NAME_START = 'carousel-item-start'\nconst CLASS_NAME_NEXT = 'carousel-item-next'\nconst CLASS_NAME_PREV = 'carousel-item-prev'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\n\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ACTIVE_ITEM = '.active.carousel-item'\nconst SELECTOR_ITEM = '.carousel-item'\nconst SELECTOR_ITEM_IMG = '.carousel-item img'\nconst SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]'\n\nconst PointerType = {\n TOUCH: 'touch',\n PEN: 'pen'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\nclass Carousel extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._items = null\n this._interval = null\n this._activeElement = null\n this._isPaused = false\n this._isSliding = false\n this.touchTimeout = null\n this.touchStartX = 0\n this.touchDeltaX = 0\n\n this._config = this._getConfig(config)\n this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n this._pointerEvent = Boolean(window.PointerEvent)\n\n this._addEventListeners()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n next() {\n if (!this._isSliding) {\n this._slide(DIRECTION_NEXT)\n }\n }\n\n nextWhenVisible() {\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden && isVisible(this._element)) {\n this.next()\n }\n }\n\n prev() {\n if (!this._isSliding) {\n this._slide(DIRECTION_PREV)\n }\n }\n\n pause(event) {\n if (!event) {\n this._isPaused = true\n }\n\n if (SelectorEngine.findOne(SELECTOR_NEXT_PREV, this._element)) {\n triggerTransitionEnd(this._element)\n this.cycle(true)\n }\n\n clearInterval(this._interval)\n this._interval = null\n }\n\n cycle(event) {\n if (!event) {\n this._isPaused = false\n }\n\n if (this._interval) {\n clearInterval(this._interval)\n this._interval = null\n }\n\n if (this._config && this._config.interval && !this._isPaused) {\n this._updateInterval()\n\n this._interval = setInterval(\n (document.visibilityState ? this.nextWhenVisible : this.next).bind(this),\n this._config.interval\n )\n }\n }\n\n to(index) {\n this._activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n const activeIndex = this._getItemIndex(this._activeElement)\n\n if (index > this._items.length - 1 || index < 0) {\n return\n }\n\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.to(index))\n return\n }\n\n if (activeIndex === index) {\n this.pause()\n this.cycle()\n return\n }\n\n const direction = index > activeIndex ?\n DIRECTION_NEXT :\n DIRECTION_PREV\n\n this._slide(direction, this._items[index])\n }\n\n dispose() {\n super.dispose()\n EventHandler.off(this._element, EVENT_KEY)\n\n this._items = null\n this._config = null\n this._interval = null\n this._isPaused = null\n this._isSliding = null\n this._activeElement = null\n this._indicatorsElement = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _handleSwipe() {\n const absDeltax = Math.abs(this.touchDeltaX)\n\n if (absDeltax <= SWIPE_THRESHOLD) {\n return\n }\n\n const direction = absDeltax / this.touchDeltaX\n\n this.touchDeltaX = 0\n\n // swipe left\n if (direction > 0) {\n this.prev()\n }\n\n // swipe right\n if (direction < 0) {\n this.next()\n }\n }\n\n _addEventListeners() {\n if (this._config.keyboard) {\n EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n }\n\n if (this._config.pause === 'hover') {\n EventHandler.on(this._element, EVENT_MOUSEENTER, event => this.pause(event))\n EventHandler.on(this._element, EVENT_MOUSELEAVE, event => this.cycle(event))\n }\n\n if (this._config.touch && this._touchSupported) {\n this._addTouchEventListeners()\n }\n }\n\n _addTouchEventListeners() {\n const start = event => {\n if (this._pointerEvent && PointerType[event.pointerType.toUpperCase()]) {\n this.touchStartX = event.clientX\n } else if (!this._pointerEvent) {\n this.touchStartX = event.touches[0].clientX\n }\n }\n\n const move = event => {\n // ensure swiping with one touch and not pinching\n if (event.touches && event.touches.length > 1) {\n this.touchDeltaX = 0\n } else {\n this.touchDeltaX = event.touches[0].clientX - this.touchStartX\n }\n }\n\n const end = event => {\n if (this._pointerEvent && PointerType[event.pointerType.toUpperCase()]) {\n this.touchDeltaX = event.clientX - this.touchStartX\n }\n\n this._handleSwipe()\n if (this._config.pause === 'hover') {\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n\n this.pause()\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout)\n }\n\n this.touchTimeout = setTimeout(event => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n }\n }\n\n SelectorEngine.find(SELECTOR_ITEM_IMG, this._element).forEach(itemImg => {\n EventHandler.on(itemImg, EVENT_DRAG_START, e => e.preventDefault())\n })\n\n if (this._pointerEvent) {\n EventHandler.on(this._element, EVENT_POINTERDOWN, event => start(event))\n EventHandler.on(this._element, EVENT_POINTERUP, event => end(event))\n\n this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n } else {\n EventHandler.on(this._element, EVENT_TOUCHSTART, event => start(event))\n EventHandler.on(this._element, EVENT_TOUCHMOVE, event => move(event))\n EventHandler.on(this._element, EVENT_TOUCHEND, event => end(event))\n }\n }\n\n _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return\n }\n\n switch (event.key) {\n case ARROW_LEFT_KEY:\n event.preventDefault()\n this.prev()\n break\n case ARROW_RIGHT_KEY:\n event.preventDefault()\n this.next()\n break\n default:\n }\n }\n\n _getItemIndex(element) {\n this._items = element && element.parentNode ?\n SelectorEngine.find(SELECTOR_ITEM, element.parentNode) :\n []\n\n return this._items.indexOf(element)\n }\n\n _getItemByDirection(direction, activeElement) {\n const isNextDirection = direction === DIRECTION_NEXT\n const isPrevDirection = direction === DIRECTION_PREV\n const activeIndex = this._getItemIndex(activeElement)\n const lastItemIndex = this._items.length - 1\n const isGoingToWrap = (isPrevDirection && activeIndex === 0) ||\n (isNextDirection && activeIndex === lastItemIndex)\n\n if (isGoingToWrap && !this._config.wrap) {\n return activeElement\n }\n\n const delta = direction === DIRECTION_PREV ? -1 : 1\n const itemIndex = (activeIndex + delta) % this._items.length\n\n return itemIndex === -1 ?\n this._items[this._items.length - 1] :\n this._items[itemIndex]\n }\n\n _triggerSlideEvent(relatedTarget, eventDirectionName) {\n const targetIndex = this._getItemIndex(relatedTarget)\n const fromIndex = this._getItemIndex(SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element))\n\n return EventHandler.trigger(this._element, EVENT_SLIDE, {\n relatedTarget,\n direction: eventDirectionName,\n from: fromIndex,\n to: targetIndex\n })\n }\n\n _setActiveIndicatorElement(element) {\n if (this._indicatorsElement) {\n const indicators = SelectorEngine.find(SELECTOR_ACTIVE, this._indicatorsElement)\n\n for (let i = 0; i < indicators.length; i++) {\n indicators[i].classList.remove(CLASS_NAME_ACTIVE)\n }\n\n const nextIndicator = this._indicatorsElement.children[\n this._getItemIndex(element)\n ]\n\n if (nextIndicator) {\n nextIndicator.classList.add(CLASS_NAME_ACTIVE)\n }\n }\n }\n\n _updateInterval() {\n const element = this._activeElement || SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n\n if (!element) {\n return\n }\n\n const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10)\n\n if (elementInterval) {\n this._config.defaultInterval = this._config.defaultInterval || this._config.interval\n this._config.interval = elementInterval\n } else {\n this._config.interval = this._config.defaultInterval || this._config.interval\n }\n }\n\n _slide(direction, element) {\n const activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n const activeElementIndex = this._getItemIndex(activeElement)\n const nextElement = element || (activeElement && this._getItemByDirection(direction, activeElement))\n\n const nextElementIndex = this._getItemIndex(nextElement)\n const isCycling = Boolean(this._interval)\n\n let directionalClassName\n let orderClassName\n let eventDirectionName\n\n if (direction === DIRECTION_NEXT) {\n directionalClassName = CLASS_NAME_START\n orderClassName = CLASS_NAME_NEXT\n eventDirectionName = DIRECTION_LEFT\n } else {\n directionalClassName = CLASS_NAME_END\n orderClassName = CLASS_NAME_PREV\n eventDirectionName = DIRECTION_RIGHT\n }\n\n if (nextElement && nextElement.classList.contains(CLASS_NAME_ACTIVE)) {\n this._isSliding = false\n return\n }\n\n const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName)\n if (slideEvent.defaultPrevented) {\n return\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n return\n }\n\n this._isSliding = true\n\n if (isCycling) {\n this.pause()\n }\n\n this._setActiveIndicatorElement(nextElement)\n this._activeElement = nextElement\n\n if (this._element.classList.contains(CLASS_NAME_SLIDE)) {\n nextElement.classList.add(orderClassName)\n\n reflow(nextElement)\n\n activeElement.classList.add(directionalClassName)\n nextElement.classList.add(directionalClassName)\n\n const transitionDuration = getTransitionDurationFromElement(activeElement)\n\n EventHandler.one(activeElement, TRANSITION_END, () => {\n nextElement.classList.remove(directionalClassName, orderClassName)\n nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n activeElement.classList.remove(CLASS_NAME_ACTIVE, orderClassName, directionalClassName)\n\n this._isSliding = false\n\n setTimeout(() => {\n EventHandler.trigger(this._element, EVENT_SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n })\n }, 0)\n })\n\n emulateTransitionEnd(activeElement, transitionDuration)\n } else {\n activeElement.classList.remove(CLASS_NAME_ACTIVE)\n nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n this._isSliding = false\n EventHandler.trigger(this._element, EVENT_SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n })\n }\n\n if (isCycling) {\n this.cycle()\n }\n }\n\n // Static\n\n static carouselInterface(element, config) {\n let data = Data.getData(element, DATA_KEY)\n let _config = {\n ...Default,\n ...Manipulator.getDataAttributes(element)\n }\n\n if (typeof config === 'object') {\n _config = {\n ..._config,\n ...config\n }\n }\n\n const action = typeof config === 'string' ? config : _config.slide\n\n if (!data) {\n data = new Carousel(element, _config)\n }\n\n if (typeof config === 'number') {\n data.to(config)\n } else if (typeof action === 'string') {\n if (typeof data[action] === 'undefined') {\n throw new TypeError(`No method named \"${action}\"`)\n }\n\n data[action]()\n } else if (_config.interval && _config.ride) {\n data.pause()\n data.cycle()\n }\n }\n\n static jQueryInterface(config) {\n return this.each(function () {\n Carousel.carouselInterface(this, config)\n })\n }\n\n static dataApiClickHandler(event) {\n const target = getElementFromSelector(this)\n\n if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n return\n }\n\n const config = {\n ...Manipulator.getDataAttributes(target),\n ...Manipulator.getDataAttributes(this)\n }\n const slideIndex = this.getAttribute('data-bs-slide-to')\n\n if (slideIndex) {\n config.interval = false\n }\n\n Carousel.carouselInterface(target, config)\n\n if (slideIndex) {\n Data.getData(target, DATA_KEY).to(slideIndex)\n }\n\n event.preventDefault()\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, Carousel.dataApiClickHandler)\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE)\n\n for (let i = 0, len = carousels.length; i < len; i++) {\n Carousel.carouselInterface(carousels[i], Data.getData(carousels[i], DATA_KEY))\n }\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Carousel to jQuery only if jQuery is present\n */\n\nonDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Carousel.jQueryInterface\n $.fn[NAME].Constructor = Carousel\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Carousel.jQueryInterface\n }\n }\n})\n\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n getjQuery,\n onDOMContentLoaded,\n TRANSITION_END,\n emulateTransitionEnd,\n getSelectorFromElement,\n getElementFromSelector,\n getTransitionDurationFromElement,\n isElement,\n reflow,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'collapse'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst Default = {\n toggle: true,\n parent: ''\n}\n\nconst DefaultType = {\n toggle: 'boolean',\n parent: '(string|element)'\n}\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_COLLAPSE = 'collapse'\nconst CLASS_NAME_COLLAPSING = 'collapsing'\nconst CLASS_NAME_COLLAPSED = 'collapsed'\n\nconst WIDTH = 'width'\nconst HEIGHT = 'height'\n\nconst SELECTOR_ACTIVES = '.show, .collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"collapse\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Collapse extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._isTransitioning = false\n this._config = this._getConfig(config)\n this._triggerArray = SelectorEngine.find(\n `${SELECTOR_DATA_TOGGLE}[href=\"#${element.id}\"],` +\n `${SELECTOR_DATA_TOGGLE}[data-bs-target=\"#${element.id}\"]`\n )\n\n const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n for (let i = 0, len = toggleList.length; i < len; i++) {\n const elem = toggleList[i]\n const selector = getSelectorFromElement(elem)\n const filterElement = SelectorEngine.find(selector)\n .filter(foundElem => foundElem === element)\n\n if (selector !== null && filterElement.length) {\n this._selector = selector\n this._triggerArray.push(elem)\n }\n }\n\n this._parent = this._config.parent ? this._getParent() : null\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._element, this._triggerArray)\n }\n\n if (this._config.toggle) {\n this.toggle()\n }\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n toggle() {\n if (this._element.classList.contains(CLASS_NAME_SHOW)) {\n this.hide()\n } else {\n this.show()\n }\n }\n\n show() {\n if (this._isTransitioning || this._element.classList.contains(CLASS_NAME_SHOW)) {\n return\n }\n\n let actives\n let activesData\n\n if (this._parent) {\n actives = SelectorEngine.find(SELECTOR_ACTIVES, this._parent)\n .filter(elem => {\n if (typeof this._config.parent === 'string') {\n return elem.getAttribute('data-bs-parent') === this._config.parent\n }\n\n return elem.classList.contains(CLASS_NAME_COLLAPSE)\n })\n\n if (actives.length === 0) {\n actives = null\n }\n }\n\n const container = SelectorEngine.findOne(this._selector)\n if (actives) {\n const tempActiveData = actives.find(elem => container !== elem)\n activesData = tempActiveData ? Data.getData(tempActiveData, DATA_KEY) : null\n\n if (activesData && activesData._isTransitioning) {\n return\n }\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n if (startEvent.defaultPrevented) {\n return\n }\n\n if (actives) {\n actives.forEach(elemActive => {\n if (container !== elemActive) {\n Collapse.collapseInterface(elemActive, 'hide')\n }\n\n if (!activesData) {\n Data.setData(elemActive, DATA_KEY, null)\n }\n })\n }\n\n const dimension = this._getDimension()\n\n this._element.classList.remove(CLASS_NAME_COLLAPSE)\n this._element.classList.add(CLASS_NAME_COLLAPSING)\n\n this._element.style[dimension] = 0\n\n if (this._triggerArray.length) {\n this._triggerArray.forEach(element => {\n element.classList.remove(CLASS_NAME_COLLAPSED)\n element.setAttribute('aria-expanded', true)\n })\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n this._element.classList.remove(CLASS_NAME_COLLAPSING)\n this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n this._element.style[dimension] = ''\n\n this.setTransitioning(false)\n\n EventHandler.trigger(this._element, EVENT_SHOWN)\n }\n\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n const scrollSize = `scroll${capitalizedDimension}`\n const transitionDuration = getTransitionDurationFromElement(this._element)\n\n EventHandler.one(this._element, TRANSITION_END, complete)\n\n emulateTransitionEnd(this._element, transitionDuration)\n this._element.style[dimension] = `${this._element[scrollSize]}px`\n }\n\n hide() {\n if (this._isTransitioning || !this._element.classList.contains(CLASS_NAME_SHOW)) {\n return\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n if (startEvent.defaultPrevented) {\n return\n }\n\n const dimension = this._getDimension()\n\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n reflow(this._element)\n\n this._element.classList.add(CLASS_NAME_COLLAPSING)\n this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n const triggerArrayLength = this._triggerArray.length\n if (triggerArrayLength > 0) {\n for (let i = 0; i < triggerArrayLength; i++) {\n const trigger = this._triggerArray[i]\n const elem = getElementFromSelector(trigger)\n\n if (elem && !elem.classList.contains(CLASS_NAME_SHOW)) {\n trigger.classList.add(CLASS_NAME_COLLAPSED)\n trigger.setAttribute('aria-expanded', false)\n }\n }\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n this.setTransitioning(false)\n this._element.classList.remove(CLASS_NAME_COLLAPSING)\n this._element.classList.add(CLASS_NAME_COLLAPSE)\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n this._element.style[dimension] = ''\n const transitionDuration = getTransitionDurationFromElement(this._element)\n\n EventHandler.one(this._element, TRANSITION_END, complete)\n emulateTransitionEnd(this._element, transitionDuration)\n }\n\n setTransitioning(isTransitioning) {\n this._isTransitioning = isTransitioning\n }\n\n dispose() {\n super.dispose()\n this._config = null\n this._parent = null\n this._triggerArray = null\n this._isTransitioning = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n config.toggle = Boolean(config.toggle) // Coerce string values\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _getDimension() {\n return this._element.classList.contains(WIDTH) ? WIDTH : HEIGHT\n }\n\n _getParent() {\n let { parent } = this._config\n\n if (isElement(parent)) {\n // it's a jQuery object\n if (typeof parent.jquery !== 'undefined' || typeof parent[0] !== 'undefined') {\n parent = parent[0]\n }\n } else {\n parent = SelectorEngine.findOne(parent)\n }\n\n const selector = `${SELECTOR_DATA_TOGGLE}[data-bs-parent=\"${parent}\"]`\n\n SelectorEngine.find(selector, parent)\n .forEach(element => {\n const selected = getElementFromSelector(element)\n\n this._addAriaAndCollapsedClass(\n selected,\n [element]\n )\n })\n\n return parent\n }\n\n _addAriaAndCollapsedClass(element, triggerArray) {\n if (!element || !triggerArray.length) {\n return\n }\n\n const isOpen = element.classList.contains(CLASS_NAME_SHOW)\n\n triggerArray.forEach(elem => {\n if (isOpen) {\n elem.classList.remove(CLASS_NAME_COLLAPSED)\n } else {\n elem.classList.add(CLASS_NAME_COLLAPSED)\n }\n\n elem.setAttribute('aria-expanded', isOpen)\n })\n }\n\n // Static\n\n static collapseInterface(element, config) {\n let data = Data.getData(element, DATA_KEY)\n const _config = {\n ...Default,\n ...Manipulator.getDataAttributes(element),\n ...(typeof config === 'object' && config ? config : {})\n }\n\n if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false\n }\n\n if (!data) {\n data = new Collapse(element, _config)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n }\n\n static jQueryInterface(config) {\n return this.each(function () {\n Collapse.collapseInterface(this, config)\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n // preventDefault only for elements (which change the URL) not inside the collapsible element\n if (event.target.tagName === 'A') {\n event.preventDefault()\n }\n\n const triggerData = Manipulator.getDataAttributes(this)\n const selector = getSelectorFromElement(this)\n const selectorElements = SelectorEngine.find(selector)\n\n selectorElements.forEach(element => {\n const data = Data.getData(element, DATA_KEY)\n let config\n if (data) {\n // update parent attribute\n if (data._parent === null && typeof triggerData.parent === 'string') {\n data._config.parent = triggerData.parent\n data._parent = data._getParent()\n }\n\n config = 'toggle'\n } else {\n config = triggerData\n }\n\n Collapse.collapseInterface(element, config)\n })\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Collapse to jQuery only if jQuery is present\n */\n\nonDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Collapse.jQueryInterface\n $.fn[NAME].Constructor = Collapse\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Collapse.jQueryInterface\n }\n }\n})\n\nexport default Collapse\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\n\nimport {\n getjQuery,\n onDOMContentLoaded,\n getElementFromSelector,\n isElement,\n isVisible,\n isRTL,\n noop,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'dropdown'\nconst DATA_KEY = 'bs.dropdown'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst SPACE_KEY = 'Space'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst RIGHT_MOUSE_BUTTON = 2 // MouseEvent.button value for the secondary button, usually the right button\n\nconst REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEY}|${ARROW_DOWN_KEY}|${ESCAPE_KEY}`)\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK = `click${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DISABLED = 'disabled'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_DROPUP = 'dropup'\nconst CLASS_NAME_DROPEND = 'dropend'\nconst CLASS_NAME_DROPSTART = 'dropstart'\nconst CLASS_NAME_NAVBAR = 'navbar'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dropdown\"]'\nconst SELECTOR_FORM_CHILD = '.dropdown form'\nconst SELECTOR_MENU = '.dropdown-menu'\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav'\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n\nconst PLACEMENT_TOP = isRTL ? 'top-end' : 'top-start'\nconst PLACEMENT_TOPEND = isRTL ? 'top-start' : 'top-end'\nconst PLACEMENT_BOTTOM = isRTL ? 'bottom-end' : 'bottom-start'\nconst PLACEMENT_BOTTOMEND = isRTL ? 'bottom-start' : 'bottom-end'\nconst PLACEMENT_RIGHT = isRTL ? 'left-start' : 'right-start'\nconst PLACEMENT_LEFT = isRTL ? 'right-start' : 'left-start'\n\nconst Default = {\n offset: 0,\n flip: true,\n boundary: 'clippingParents',\n reference: 'toggle',\n display: 'dynamic',\n popperConfig: null\n}\n\nconst DefaultType = {\n offset: '(number|string|function)',\n flip: 'boolean',\n boundary: '(string|element)',\n reference: '(string|element)',\n display: 'string',\n popperConfig: '(null|object)'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Dropdown extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._popper = null\n this._config = this._getConfig(config)\n this._menu = this._getMenuElement()\n this._inNavbar = this._detectNavbar()\n\n this._addEventListeners()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n toggle() {\n if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED)) {\n return\n }\n\n const isActive = this._element.classList.contains(CLASS_NAME_SHOW)\n\n Dropdown.clearMenus()\n\n if (isActive) {\n return\n }\n\n this.show()\n }\n\n show() {\n if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED) || this._menu.classList.contains(CLASS_NAME_SHOW)) {\n return\n }\n\n const parent = Dropdown.getParentFromElement(this._element)\n const relatedTarget = {\n relatedTarget: this._element\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, relatedTarget)\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n // Totally disable Popper for Dropdowns in Navbar\n if (!this._inNavbar) {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)')\n }\n\n let referenceElement = this._element\n\n if (this._config.reference === 'parent') {\n referenceElement = parent\n } else if (isElement(this._config.reference)) {\n referenceElement = this._config.reference\n\n // Check if it's jQuery element\n if (typeof this._config.reference.jquery !== 'undefined') {\n referenceElement = this._config.reference[0]\n }\n }\n\n this._popper = Popper.createPopper(referenceElement, this._menu, this._getPopperConfig())\n }\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement &&\n !parent.closest(SELECTOR_NAVBAR_NAV)) {\n [].concat(...document.body.children)\n .forEach(elem => EventHandler.on(elem, 'mouseover', null, noop()))\n }\n\n this._element.focus()\n this._element.setAttribute('aria-expanded', true)\n\n this._menu.classList.toggle(CLASS_NAME_SHOW)\n this._element.classList.toggle(CLASS_NAME_SHOW)\n EventHandler.trigger(parent, EVENT_SHOWN, relatedTarget)\n }\n\n hide() {\n if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED) || !this._menu.classList.contains(CLASS_NAME_SHOW)) {\n return\n }\n\n const parent = Dropdown.getParentFromElement(this._element)\n const relatedTarget = {\n relatedTarget: this._element\n }\n\n const hideEvent = EventHandler.trigger(parent, EVENT_HIDE, relatedTarget)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n if (this._popper) {\n this._popper.destroy()\n }\n\n this._menu.classList.toggle(CLASS_NAME_SHOW)\n this._element.classList.toggle(CLASS_NAME_SHOW)\n EventHandler.trigger(parent, EVENT_HIDDEN, relatedTarget)\n }\n\n dispose() {\n super.dispose()\n EventHandler.off(this._element, EVENT_KEY)\n this._menu = null\n\n if (this._popper) {\n this._popper.destroy()\n this._popper = null\n }\n }\n\n update() {\n this._inNavbar = this._detectNavbar()\n if (this._popper) {\n this._popper.update()\n }\n }\n\n // Private\n\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_CLICK, event => {\n event.preventDefault()\n event.stopPropagation()\n this.toggle()\n })\n }\n\n _getConfig(config) {\n config = {\n ...this.constructor.Default,\n ...Manipulator.getDataAttributes(this._element),\n ...config\n }\n\n typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n return config\n }\n\n _getMenuElement() {\n return SelectorEngine.next(this._element, SELECTOR_MENU)[0]\n }\n\n _getPlacement() {\n const parentDropdown = this._element.parentNode\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {\n return PLACEMENT_RIGHT\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {\n return PLACEMENT_LEFT\n }\n\n // We need to trim the value because custom properties can also include spaces\n const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end'\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {\n return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP\n }\n\n return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM\n }\n\n _detectNavbar() {\n return this._element.closest(`.${CLASS_NAME_NAVBAR}`) !== null\n }\n\n _getPopperConfig() {\n const popperConfig = {\n placement: this._getPlacement(),\n modifiers: [{\n name: 'preventOverflow',\n options: {\n altBoundary: this._config.flip,\n rootBoundary: this._config.boundary\n }\n }]\n }\n\n // Disable Popper if we have a static display\n if (this._config.display === 'static') {\n popperConfig.modifiers = [{\n name: 'applyStyles',\n enabled: false\n }]\n }\n\n return {\n ...popperConfig,\n ...this._config.popperConfig\n }\n }\n\n // Static\n\n static dropdownInterface(element, config) {\n let data = Data.getData(element, DATA_KEY)\n const _config = typeof config === 'object' ? config : null\n\n if (!data) {\n data = new Dropdown(element, _config)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n }\n\n static jQueryInterface(config) {\n return this.each(function () {\n Dropdown.dropdownInterface(this, config)\n })\n }\n\n static clearMenus(event) {\n if (event && (event.button === RIGHT_MOUSE_BUTTON || (event.type === 'keyup' && event.key !== TAB_KEY))) {\n return\n }\n\n const toggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n for (let i = 0, len = toggles.length; i < len; i++) {\n const parent = Dropdown.getParentFromElement(toggles[i])\n const context = Data.getData(toggles[i], DATA_KEY)\n const relatedTarget = {\n relatedTarget: toggles[i]\n }\n\n if (event && event.type === 'click') {\n relatedTarget.clickEvent = event\n }\n\n if (!context) {\n continue\n }\n\n const dropdownMenu = context._menu\n if (!toggles[i].classList.contains(CLASS_NAME_SHOW)) {\n continue\n }\n\n if (event && ((event.type === 'click' &&\n /input|textarea/i.test(event.target.tagName)) ||\n (event.type === 'keyup' && event.key === TAB_KEY)) &&\n dropdownMenu.contains(event.target)) {\n continue\n }\n\n const hideEvent = EventHandler.trigger(parent, EVENT_HIDE, relatedTarget)\n if (hideEvent.defaultPrevented) {\n continue\n }\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n [].concat(...document.body.children)\n .forEach(elem => EventHandler.off(elem, 'mouseover', null, noop()))\n }\n\n toggles[i].setAttribute('aria-expanded', 'false')\n\n if (context._popper) {\n context._popper.destroy()\n }\n\n dropdownMenu.classList.remove(CLASS_NAME_SHOW)\n toggles[i].classList.remove(CLASS_NAME_SHOW)\n EventHandler.trigger(parent, EVENT_HIDDEN, relatedTarget)\n }\n }\n\n static getParentFromElement(element) {\n return getElementFromSelector(element) || element.parentNode\n }\n\n static dataApiKeydownHandler(event) {\n // If not input/textarea:\n // - And not a key in REGEXP_KEYDOWN => not a dropdown command\n // If input/textarea:\n // - If space key => not a dropdown command\n // - If key is other than escape\n // - If key is not up or down => not a dropdown command\n // - If trigger inside the menu => not a dropdown command\n if (/input|textarea/i.test(event.target.tagName) ?\n event.key === SPACE_KEY || (event.key !== ESCAPE_KEY &&\n ((event.key !== ARROW_DOWN_KEY && event.key !== ARROW_UP_KEY) ||\n event.target.closest(SELECTOR_MENU))) :\n !REGEXP_KEYDOWN.test(event.key)) {\n return\n }\n\n event.preventDefault()\n event.stopPropagation()\n\n if (this.disabled || this.classList.contains(CLASS_NAME_DISABLED)) {\n return\n }\n\n const parent = Dropdown.getParentFromElement(this)\n const isActive = this.classList.contains(CLASS_NAME_SHOW)\n\n if (event.key === ESCAPE_KEY) {\n const button = this.matches(SELECTOR_DATA_TOGGLE) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0]\n button.focus()\n Dropdown.clearMenus()\n return\n }\n\n if (!isActive || event.key === SPACE_KEY) {\n Dropdown.clearMenus()\n return\n }\n\n const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, parent).filter(isVisible)\n\n if (!items.length) {\n return\n }\n\n let index = items.indexOf(event.target)\n\n // Up\n if (event.key === ARROW_UP_KEY && index > 0) {\n index--\n }\n\n // Down\n if (event.key === ARROW_DOWN_KEY && index < items.length - 1) {\n index++\n }\n\n // index is -1 if the first keydown is an ArrowUp\n index = index === -1 ? 0 : index\n\n items[index].focus()\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_CLICK_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n event.preventDefault()\n event.stopPropagation()\n Dropdown.dropdownInterface(this, 'toggle')\n})\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_FORM_CHILD, e => e.stopPropagation())\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Dropdown to jQuery only if jQuery is present\n */\n\nonDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Dropdown.jQueryInterface\n $.fn[NAME].Constructor = Dropdown\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Dropdown.jQueryInterface\n }\n }\n})\n\nexport default Dropdown\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n getjQuery,\n onDOMContentLoaded,\n TRANSITION_END,\n emulateTransitionEnd,\n getElementFromSelector,\n getTransitionDurationFromElement,\n isVisible,\n isRTL,\n reflow,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'modal'\nconst DATA_KEY = 'bs.modal'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst ESCAPE_KEY = 'Escape'\n\nconst Default = {\n backdrop: true,\n keyboard: true,\n focus: true\n}\n\nconst DefaultType = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n focus: 'boolean'\n}\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEUP_DISMISS = `mouseup.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SCROLLBAR_MEASURER = 'modal-scrollbar-measure'\nconst CLASS_NAME_BACKDROP = 'modal-backdrop'\nconst CLASS_NAME_OPEN = 'modal-open'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_STATIC = 'modal-static'\n\nconst SELECTOR_DIALOG = '.modal-dialog'\nconst SELECTOR_MODAL_BODY = '.modal-body'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"modal\"]'\nconst SELECTOR_DATA_DISMISS = '[data-bs-dismiss=\"modal\"]'\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Modal extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._config = this._getConfig(config)\n this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, element)\n this._backdrop = null\n this._isShown = false\n this._isBodyOverflowing = false\n this._ignoreBackdropClick = false\n this._isTransitioning = false\n this._scrollbarWidth = 0\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget)\n }\n\n show(relatedTarget) {\n if (this._isShown || this._isTransitioning) {\n return\n }\n\n if (this._element.classList.contains(CLASS_NAME_FADE)) {\n this._isTransitioning = true\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n relatedTarget\n })\n\n if (this._isShown || showEvent.defaultPrevented) {\n return\n }\n\n this._isShown = true\n\n this._checkScrollbar()\n this._setScrollbar()\n\n this._adjustDialog()\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n EventHandler.on(this._element, EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, event => this.hide(event))\n\n EventHandler.on(this._dialog, EVENT_MOUSEDOWN_DISMISS, () => {\n EventHandler.one(this._element, EVENT_MOUSEUP_DISMISS, event => {\n if (event.target === this._element) {\n this._ignoreBackdropClick = true\n }\n })\n })\n\n this._showBackdrop(() => this._showElement(relatedTarget))\n }\n\n hide(event) {\n if (event) {\n event.preventDefault()\n }\n\n if (!this._isShown || this._isTransitioning) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n this._isShown = false\n const transition = this._element.classList.contains(CLASS_NAME_FADE)\n\n if (transition) {\n this._isTransitioning = true\n }\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n EventHandler.off(document, EVENT_FOCUSIN)\n\n this._element.classList.remove(CLASS_NAME_SHOW)\n\n EventHandler.off(this._element, EVENT_CLICK_DISMISS)\n EventHandler.off(this._dialog, EVENT_MOUSEDOWN_DISMISS)\n\n if (transition) {\n const transitionDuration = getTransitionDurationFromElement(this._element)\n\n EventHandler.one(this._element, TRANSITION_END, event => this._hideModal(event))\n emulateTransitionEnd(this._element, transitionDuration)\n } else {\n this._hideModal()\n }\n }\n\n dispose() {\n [window, this._element, this._dialog]\n .forEach(htmlElement => EventHandler.off(htmlElement, EVENT_KEY))\n\n super.dispose()\n\n /**\n * `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API`\n * Do not move `document` in `htmlElements` array\n * It will remove `EVENT_CLICK_DATA_API` event that should remain\n */\n EventHandler.off(document, EVENT_FOCUSIN)\n\n this._config = null\n this._dialog = null\n this._backdrop = null\n this._isShown = null\n this._isBodyOverflowing = null\n this._ignoreBackdropClick = null\n this._isTransitioning = null\n this._scrollbarWidth = null\n }\n\n handleUpdate() {\n this._adjustDialog()\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _showElement(relatedTarget) {\n const transition = this._element.classList.contains(CLASS_NAME_FADE)\n const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog)\n\n if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n // Don't move modal's DOM position\n document.body.appendChild(this._element)\n }\n\n this._element.style.display = 'block'\n this._element.removeAttribute('aria-hidden')\n this._element.setAttribute('aria-modal', true)\n this._element.setAttribute('role', 'dialog')\n this._element.scrollTop = 0\n\n if (modalBody) {\n modalBody.scrollTop = 0\n }\n\n if (transition) {\n reflow(this._element)\n }\n\n this._element.classList.add(CLASS_NAME_SHOW)\n\n if (this._config.focus) {\n this._enforceFocus()\n }\n\n const transitionComplete = () => {\n if (this._config.focus) {\n this._element.focus()\n }\n\n this._isTransitioning = false\n EventHandler.trigger(this._element, EVENT_SHOWN, {\n relatedTarget\n })\n }\n\n if (transition) {\n const transitionDuration = getTransitionDurationFromElement(this._dialog)\n\n EventHandler.one(this._dialog, TRANSITION_END, transitionComplete)\n emulateTransitionEnd(this._dialog, transitionDuration)\n } else {\n transitionComplete()\n }\n }\n\n _enforceFocus() {\n EventHandler.off(document, EVENT_FOCUSIN) // guard against infinite focus loop\n EventHandler.on(document, EVENT_FOCUSIN, event => {\n if (document !== event.target &&\n this._element !== event.target &&\n !this._element.contains(event.target)) {\n this._element.focus()\n }\n })\n }\n\n _setEscapeEvent() {\n if (this._isShown) {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n if (this._config.keyboard && event.key === ESCAPE_KEY) {\n event.preventDefault()\n this.hide()\n } else if (!this._config.keyboard && event.key === ESCAPE_KEY) {\n this._triggerBackdropTransition()\n }\n })\n } else {\n EventHandler.off(this._element, EVENT_KEYDOWN_DISMISS)\n }\n }\n\n _setResizeEvent() {\n if (this._isShown) {\n EventHandler.on(window, EVENT_RESIZE, () => this._adjustDialog())\n } else {\n EventHandler.off(window, EVENT_RESIZE)\n }\n }\n\n _hideModal() {\n this._element.style.display = 'none'\n this._element.setAttribute('aria-hidden', true)\n this._element.removeAttribute('aria-modal')\n this._element.removeAttribute('role')\n this._isTransitioning = false\n this._showBackdrop(() => {\n document.body.classList.remove(CLASS_NAME_OPEN)\n this._resetAdjustments()\n this._resetScrollbar()\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n })\n }\n\n _removeBackdrop() {\n this._backdrop.parentNode.removeChild(this._backdrop)\n this._backdrop = null\n }\n\n _showBackdrop(callback) {\n const animate = this._element.classList.contains(CLASS_NAME_FADE) ?\n CLASS_NAME_FADE :\n ''\n\n if (this._isShown && this._config.backdrop) {\n this._backdrop = document.createElement('div')\n this._backdrop.className = CLASS_NAME_BACKDROP\n\n if (animate) {\n this._backdrop.classList.add(animate)\n }\n\n document.body.appendChild(this._backdrop)\n\n EventHandler.on(this._element, EVENT_CLICK_DISMISS, event => {\n if (this._ignoreBackdropClick) {\n this._ignoreBackdropClick = false\n return\n }\n\n if (event.target !== event.currentTarget) {\n return\n }\n\n if (this._config.backdrop === 'static') {\n this._triggerBackdropTransition()\n } else {\n this.hide()\n }\n })\n\n if (animate) {\n reflow(this._backdrop)\n }\n\n this._backdrop.classList.add(CLASS_NAME_SHOW)\n\n if (!animate) {\n callback()\n return\n }\n\n const backdropTransitionDuration = getTransitionDurationFromElement(this._backdrop)\n\n EventHandler.one(this._backdrop, TRANSITION_END, callback)\n emulateTransitionEnd(this._backdrop, backdropTransitionDuration)\n } else if (!this._isShown && this._backdrop) {\n this._backdrop.classList.remove(CLASS_NAME_SHOW)\n\n const callbackRemove = () => {\n this._removeBackdrop()\n callback()\n }\n\n if (this._element.classList.contains(CLASS_NAME_FADE)) {\n const backdropTransitionDuration = getTransitionDurationFromElement(this._backdrop)\n EventHandler.one(this._backdrop, TRANSITION_END, callbackRemove)\n emulateTransitionEnd(this._backdrop, backdropTransitionDuration)\n } else {\n callbackRemove()\n }\n } else {\n callback()\n }\n }\n\n _triggerBackdropTransition() {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n if (hideEvent.defaultPrevented) {\n return\n }\n\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n\n if (!isModalOverflowing) {\n this._element.style.overflowY = 'hidden'\n }\n\n this._element.classList.add(CLASS_NAME_STATIC)\n const modalTransitionDuration = getTransitionDurationFromElement(this._dialog)\n EventHandler.off(this._element, TRANSITION_END)\n EventHandler.one(this._element, TRANSITION_END, () => {\n this._element.classList.remove(CLASS_NAME_STATIC)\n if (!isModalOverflowing) {\n EventHandler.one(this._element, TRANSITION_END, () => {\n this._element.style.overflowY = ''\n })\n emulateTransitionEnd(this._element, modalTransitionDuration)\n }\n })\n emulateTransitionEnd(this._element, modalTransitionDuration)\n this._element.focus()\n }\n\n // ----------------------------------------------------------------------\n // the following methods are used to handle overflowing modals\n // ----------------------------------------------------------------------\n\n _adjustDialog() {\n const isModalOverflowing =\n this._element.scrollHeight > document.documentElement.clientHeight\n\n if ((!this._isBodyOverflowing && isModalOverflowing && !isRTL) || (this._isBodyOverflowing && !isModalOverflowing && isRTL)) {\n this._element.style.paddingLeft = `${this._scrollbarWidth}px`\n }\n\n if ((this._isBodyOverflowing && !isModalOverflowing && !isRTL) || (!this._isBodyOverflowing && isModalOverflowing && isRTL)) {\n this._element.style.paddingRight = `${this._scrollbarWidth}px`\n }\n }\n\n _resetAdjustments() {\n this._element.style.paddingLeft = ''\n this._element.style.paddingRight = ''\n }\n\n _checkScrollbar() {\n const rect = document.body.getBoundingClientRect()\n this._isBodyOverflowing = Math.round(rect.left + rect.right) < window.innerWidth\n this._scrollbarWidth = this._getScrollbarWidth()\n }\n\n _setScrollbar() {\n if (this._isBodyOverflowing) {\n // Note: DOMNode.style.paddingRight returns the actual value or '' if not set\n // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set\n\n // Adjust fixed content padding\n SelectorEngine.find(SELECTOR_FIXED_CONTENT)\n .forEach(element => {\n const actualPadding = element.style.paddingRight\n const calculatedPadding = window.getComputedStyle(element)['padding-right']\n Manipulator.setDataAttribute(element, 'padding-right', actualPadding)\n element.style.paddingRight = `${Number.parseFloat(calculatedPadding) + this._scrollbarWidth}px`\n })\n\n // Adjust sticky content margin\n SelectorEngine.find(SELECTOR_STICKY_CONTENT)\n .forEach(element => {\n const actualMargin = element.style.marginRight\n const calculatedMargin = window.getComputedStyle(element)['margin-right']\n Manipulator.setDataAttribute(element, 'margin-right', actualMargin)\n element.style.marginRight = `${Number.parseFloat(calculatedMargin) - this._scrollbarWidth}px`\n })\n\n // Adjust body padding\n const actualPadding = document.body.style.paddingRight\n const calculatedPadding = window.getComputedStyle(document.body)['padding-right']\n\n Manipulator.setDataAttribute(document.body, 'padding-right', actualPadding)\n document.body.style.paddingRight = `${Number.parseFloat(calculatedPadding) + this._scrollbarWidth}px`\n }\n\n document.body.classList.add(CLASS_NAME_OPEN)\n }\n\n _resetScrollbar() {\n // Restore fixed content padding\n SelectorEngine.find(SELECTOR_FIXED_CONTENT)\n .forEach(element => {\n const padding = Manipulator.getDataAttribute(element, 'padding-right')\n if (typeof padding !== 'undefined') {\n Manipulator.removeDataAttribute(element, 'padding-right')\n element.style.paddingRight = padding\n }\n })\n\n // Restore sticky content and navbar-toggler margin\n SelectorEngine.find(`${SELECTOR_STICKY_CONTENT}`)\n .forEach(element => {\n const margin = Manipulator.getDataAttribute(element, 'margin-right')\n if (typeof margin !== 'undefined') {\n Manipulator.removeDataAttribute(element, 'margin-right')\n element.style.marginRight = margin\n }\n })\n\n // Restore body padding\n const padding = Manipulator.getDataAttribute(document.body, 'padding-right')\n if (typeof padding === 'undefined') {\n document.body.style.paddingRight = ''\n } else {\n Manipulator.removeDataAttribute(document.body, 'padding-right')\n document.body.style.paddingRight = padding\n }\n }\n\n _getScrollbarWidth() { // thx d.walsh\n const scrollDiv = document.createElement('div')\n scrollDiv.className = CLASS_NAME_SCROLLBAR_MEASURER\n document.body.appendChild(scrollDiv)\n const scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth\n document.body.removeChild(scrollDiv)\n return scrollbarWidth\n }\n\n // Static\n\n static jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY)\n const _config = {\n ...Default,\n ...Manipulator.getDataAttributes(this),\n ...(typeof config === 'object' && config ? config : {})\n }\n\n if (!data) {\n data = new Modal(this, _config)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](relatedTarget)\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n const target = getElementFromSelector(this)\n\n if (this.tagName === 'A' || this.tagName === 'AREA') {\n event.preventDefault()\n }\n\n EventHandler.one(target, EVENT_SHOW, showEvent => {\n if (showEvent.defaultPrevented) {\n // only register focus restorer if modal will actually get shown\n return\n }\n\n EventHandler.one(target, EVENT_HIDDEN, () => {\n if (isVisible(this)) {\n this.focus()\n }\n })\n })\n\n let data = Data.getData(target, DATA_KEY)\n if (!data) {\n const config = {\n ...Manipulator.getDataAttributes(target),\n ...Manipulator.getDataAttributes(this)\n }\n\n data = new Modal(target, config)\n }\n\n data.show(this)\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Modal to jQuery only if jQuery is present\n */\n\nonDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Modal.jQueryInterface\n $.fn[NAME].Constructor = Modal\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Modal.jQueryInterface\n }\n }\n})\n\nexport default Modal\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst uriAttrs = new Set([\n 'background',\n 'cite',\n 'href',\n 'itemtype',\n 'longdesc',\n 'poster',\n 'src',\n 'xlink:href'\n])\n\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\n/**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/gi\n\n/**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i\n\nconst allowedAttribute = (attr, allowedAttributeList) => {\n const attrName = attr.nodeName.toLowerCase()\n\n if (allowedAttributeList.includes(attrName)) {\n if (uriAttrs.has(attrName)) {\n return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN))\n }\n\n return true\n }\n\n const regExp = allowedAttributeList.filter(attrRegex => attrRegex instanceof RegExp)\n\n // Check if a regular expression validates the attribute.\n for (let i = 0, len = regExp.length; i < len; i++) {\n if (attrName.match(regExp[i])) {\n return true\n }\n }\n\n return false\n}\n\nexport const DefaultAllowlist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n}\n\nexport function sanitizeHtml(unsafeHtml, allowList, sanitizeFn) {\n if (!unsafeHtml.length) {\n return unsafeHtml\n }\n\n if (sanitizeFn && typeof sanitizeFn === 'function') {\n return sanitizeFn(unsafeHtml)\n }\n\n const domParser = new window.DOMParser()\n const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n const allowlistKeys = Object.keys(allowList)\n const elements = [].concat(...createdDocument.body.querySelectorAll('*'))\n\n for (let i = 0, len = elements.length; i < len; i++) {\n const el = elements[i]\n const elName = el.nodeName.toLowerCase()\n\n if (!allowlistKeys.includes(elName)) {\n el.parentNode.removeChild(el)\n\n continue\n }\n\n const attributeList = [].concat(...el.attributes)\n const allowedAttributes = [].concat(allowList['*'] || [], allowList[elName] || [])\n\n attributeList.forEach(attr => {\n if (!allowedAttribute(attr, allowedAttributes)) {\n el.removeAttribute(attr.nodeName)\n }\n })\n }\n\n return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\n\nimport {\n getjQuery,\n onDOMContentLoaded,\n TRANSITION_END,\n emulateTransitionEnd,\n findShadowRoot,\n getTransitionDurationFromElement,\n getUID,\n isElement,\n isRTL,\n noop,\n typeCheckConfig\n} from './util/index'\nimport {\n DefaultAllowlist,\n sanitizeHtml\n} from './util/sanitizer'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tooltip'\nconst DATA_KEY = 'bs.tooltip'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst CLASS_PREFIX = 'bs-tooltip'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn'])\n\nconst DefaultType = {\n animation: 'boolean',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string',\n delay: '(number|object)',\n html: 'boolean',\n selector: '(string|boolean)',\n placement: '(string|function)',\n container: '(string|element|boolean)',\n fallbackPlacements: '(null|array)',\n boundary: '(string|element)',\n customClass: '(string|function)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n allowList: 'object',\n popperConfig: '(null|object)'\n}\n\nconst AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: isRTL ? 'left' : 'right',\n BOTTOM: 'bottom',\n LEFT: isRTL ? 'right' : 'left'\n}\n\nconst Default = {\n animation: true,\n template: '' +\n '' +\n '' +\n '',\n trigger: 'hover focus',\n title: '',\n delay: 0,\n html: false,\n selector: false,\n placement: 'top',\n container: false,\n fallbackPlacements: null,\n boundary: 'clippingParents',\n customClass: '',\n sanitize: true,\n sanitizeFn: null,\n allowList: DefaultAllowlist,\n popperConfig: null\n}\n\nconst Event = {\n HIDE: `hide${EVENT_KEY}`,\n HIDDEN: `hidden${EVENT_KEY}`,\n SHOW: `show${EVENT_KEY}`,\n SHOWN: `shown${EVENT_KEY}`,\n INSERTED: `inserted${EVENT_KEY}`,\n CLICK: `click${EVENT_KEY}`,\n FOCUSIN: `focusin${EVENT_KEY}`,\n FOCUSOUT: `focusout${EVENT_KEY}`,\n MOUSEENTER: `mouseenter${EVENT_KEY}`,\n MOUSELEAVE: `mouseleave${EVENT_KEY}`\n}\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_MODAL = 'modal'\nconst CLASS_NAME_SHOW = 'show'\n\nconst HOVER_STATE_SHOW = 'show'\nconst HOVER_STATE_OUT = 'out'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tooltip extends BaseComponent {\n constructor(element, config) {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)')\n }\n\n super(element)\n\n // private\n this._isEnabled = true\n this._timeout = 0\n this._hoverState = ''\n this._activeTrigger = {}\n this._popper = null\n\n // Protected\n this.config = this._getConfig(config)\n this.tip = null\n\n this._setListeners()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n static get Event() {\n return Event\n }\n\n static get EVENT_KEY() {\n return EVENT_KEY\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Public\n\n enable() {\n this._isEnabled = true\n }\n\n disable() {\n this._isEnabled = false\n }\n\n toggleEnabled() {\n this._isEnabled = !this._isEnabled\n }\n\n toggle(event) {\n if (!this._isEnabled) {\n return\n }\n\n if (event) {\n const dataKey = this.constructor.DATA_KEY\n let context = Data.getData(event.delegateTarget, dataKey)\n\n if (!context) {\n context = new this.constructor(event.delegateTarget, this._getDelegateConfig())\n Data.setData(event.delegateTarget, dataKey, context)\n }\n\n context._activeTrigger.click = !context._activeTrigger.click\n\n if (context._isWithActiveTrigger()) {\n context._enter(null, context)\n } else {\n context._leave(null, context)\n }\n } else {\n if (this.getTipElement().classList.contains(CLASS_NAME_SHOW)) {\n this._leave(null, this)\n return\n }\n\n this._enter(null, this)\n }\n }\n\n dispose() {\n clearTimeout(this._timeout)\n\n EventHandler.off(this._element, this.constructor.EVENT_KEY)\n EventHandler.off(this._element.closest(`.${CLASS_NAME_MODAL}`), 'hide.bs.modal', this._hideModalHandler)\n\n if (this.tip) {\n this.tip.parentNode.removeChild(this.tip)\n }\n\n this._isEnabled = null\n this._timeout = null\n this._hoverState = null\n this._activeTrigger = null\n if (this._popper) {\n this._popper.destroy()\n }\n\n this._popper = null\n this.config = null\n this.tip = null\n super.dispose()\n }\n\n show() {\n if (this._element.style.display === 'none') {\n throw new Error('Please use show on visible elements')\n }\n\n if (this.isWithContent() && this._isEnabled) {\n const showEvent = EventHandler.trigger(this._element, this.constructor.Event.SHOW)\n const shadowRoot = findShadowRoot(this._element)\n const isInTheDom = shadowRoot === null ?\n this._element.ownerDocument.documentElement.contains(this._element) :\n shadowRoot.contains(this._element)\n\n if (showEvent.defaultPrevented || !isInTheDom) {\n return\n }\n\n const tip = this.getTipElement()\n const tipId = getUID(this.constructor.NAME)\n\n tip.setAttribute('id', tipId)\n this._element.setAttribute('aria-describedby', tipId)\n\n this.setContent()\n\n if (this.config.animation) {\n tip.classList.add(CLASS_NAME_FADE)\n }\n\n const placement = typeof this.config.placement === 'function' ?\n this.config.placement.call(this, tip, this._element) :\n this.config.placement\n\n const attachment = this._getAttachment(placement)\n this._addAttachmentClass(attachment)\n\n const container = this._getContainer()\n Data.setData(tip, this.constructor.DATA_KEY, this)\n\n if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n container.appendChild(tip)\n }\n\n EventHandler.trigger(this._element, this.constructor.Event.INSERTED)\n\n this._popper = Popper.createPopper(this._element, tip, this._getPopperConfig(attachment))\n\n tip.classList.add(CLASS_NAME_SHOW)\n\n const customClass = typeof this.config.customClass === 'function' ? this.config.customClass() : this.config.customClass\n if (customClass) {\n tip.classList.add(...customClass.split(' '))\n }\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement) {\n [].concat(...document.body.children).forEach(element => {\n EventHandler.on(element, 'mouseover', noop())\n })\n }\n\n const complete = () => {\n const prevHoverState = this._hoverState\n\n this._hoverState = null\n EventHandler.trigger(this._element, this.constructor.Event.SHOWN)\n\n if (prevHoverState === HOVER_STATE_OUT) {\n this._leave(null, this)\n }\n }\n\n if (this.tip.classList.contains(CLASS_NAME_FADE)) {\n const transitionDuration = getTransitionDurationFromElement(this.tip)\n EventHandler.one(this.tip, TRANSITION_END, complete)\n emulateTransitionEnd(this.tip, transitionDuration)\n } else {\n complete()\n }\n }\n }\n\n hide() {\n if (!this._popper) {\n return\n }\n\n const tip = this.getTipElement()\n const complete = () => {\n if (this._hoverState !== HOVER_STATE_SHOW && tip.parentNode) {\n tip.parentNode.removeChild(tip)\n }\n\n this._cleanTipClass()\n this._element.removeAttribute('aria-describedby')\n EventHandler.trigger(this._element, this.constructor.Event.HIDDEN)\n\n if (this._popper) {\n this._popper.destroy()\n this._popper = null\n }\n }\n\n const hideEvent = EventHandler.trigger(this._element, this.constructor.Event.HIDE)\n if (hideEvent.defaultPrevented) {\n return\n }\n\n tip.classList.remove(CLASS_NAME_SHOW)\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n [].concat(...document.body.children)\n .forEach(element => EventHandler.off(element, 'mouseover', noop))\n }\n\n this._activeTrigger[TRIGGER_CLICK] = false\n this._activeTrigger[TRIGGER_FOCUS] = false\n this._activeTrigger[TRIGGER_HOVER] = false\n\n if (this.tip.classList.contains(CLASS_NAME_FADE)) {\n const transitionDuration = getTransitionDurationFromElement(tip)\n\n EventHandler.one(tip, TRANSITION_END, complete)\n emulateTransitionEnd(tip, transitionDuration)\n } else {\n complete()\n }\n\n this._hoverState = ''\n }\n\n update() {\n if (this._popper !== null) {\n this._popper.update()\n }\n }\n\n // Protected\n\n isWithContent() {\n return Boolean(this.getTitle())\n }\n\n getTipElement() {\n if (this.tip) {\n return this.tip\n }\n\n const element = document.createElement('div')\n element.innerHTML = this.config.template\n\n this.tip = element.children[0]\n return this.tip\n }\n\n setContent() {\n const tip = this.getTipElement()\n this.setElementContent(SelectorEngine.findOne(SELECTOR_TOOLTIP_INNER, tip), this.getTitle())\n tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n }\n\n setElementContent(element, content) {\n if (element === null) {\n return\n }\n\n if (typeof content === 'object' && isElement(content)) {\n if (content.jquery) {\n content = content[0]\n }\n\n // content is a DOM node or a jQuery\n if (this.config.html) {\n if (content.parentNode !== element) {\n element.innerHTML = ''\n element.appendChild(content)\n }\n } else {\n element.textContent = content.textContent\n }\n\n return\n }\n\n if (this.config.html) {\n if (this.config.sanitize) {\n content = sanitizeHtml(content, this.config.allowList, this.config.sanitizeFn)\n }\n\n element.innerHTML = content\n } else {\n element.textContent = content\n }\n }\n\n getTitle() {\n let title = this._element.getAttribute('data-bs-original-title')\n\n if (!title) {\n title = typeof this.config.title === 'function' ?\n this.config.title.call(this._element) :\n this.config.title\n }\n\n return title\n }\n\n updateAttachment(attachment) {\n if (attachment === 'right') {\n return 'end'\n }\n\n if (attachment === 'left') {\n return 'start'\n }\n\n return attachment\n }\n\n // Private\n\n _getPopperConfig(attachment) {\n const flipModifier = {\n name: 'flip',\n options: {\n altBoundary: true\n }\n }\n\n if (this.config.fallbackPlacements) {\n flipModifier.options.fallbackPlacements = this.config.fallbackPlacements\n }\n\n const defaultBsConfig = {\n placement: attachment,\n modifiers: [\n flipModifier,\n {\n name: 'preventOverflow',\n options: {\n rootBoundary: this.config.boundary\n }\n },\n {\n name: 'arrow',\n options: {\n element: `.${this.constructor.NAME}-arrow`\n }\n },\n {\n name: 'onChange',\n enabled: true,\n phase: 'afterWrite',\n fn: data => this._handlePopperPlacementChange(data)\n }\n ],\n onFirstUpdate: data => {\n if (data.options.placement !== data.placement) {\n this._handlePopperPlacementChange(data)\n }\n }\n }\n\n return {\n ...defaultBsConfig,\n ...this.config.popperConfig\n }\n }\n\n _addAttachmentClass(attachment) {\n this.getTipElement().classList.add(`${CLASS_PREFIX}-${this.updateAttachment(attachment)}`)\n }\n\n _getContainer() {\n if (this.config.container === false) {\n return document.body\n }\n\n if (isElement(this.config.container)) {\n return this.config.container\n }\n\n return SelectorEngine.findOne(this.config.container)\n }\n\n _getAttachment(placement) {\n return AttachmentMap[placement.toUpperCase()]\n }\n\n _setListeners() {\n const triggers = this.config.trigger.split(' ')\n\n triggers.forEach(trigger => {\n if (trigger === 'click') {\n EventHandler.on(this._element, this.constructor.Event.CLICK, this.config.selector, event => this.toggle(event)\n )\n } else if (trigger !== TRIGGER_MANUAL) {\n const eventIn = trigger === TRIGGER_HOVER ?\n this.constructor.Event.MOUSEENTER :\n this.constructor.Event.FOCUSIN\n const eventOut = trigger === TRIGGER_HOVER ?\n this.constructor.Event.MOUSELEAVE :\n this.constructor.Event.FOCUSOUT\n\n EventHandler.on(this._element, eventIn, this.config.selector, event => this._enter(event))\n EventHandler.on(this._element, eventOut, this.config.selector, event => this._leave(event))\n }\n })\n\n this._hideModalHandler = () => {\n if (this._element) {\n this.hide()\n }\n }\n\n EventHandler.on(this._element.closest(`.${CLASS_NAME_MODAL}`), 'hide.bs.modal', this._hideModalHandler)\n\n if (this.config.selector) {\n this.config = {\n ...this.config,\n trigger: 'manual',\n selector: ''\n }\n } else {\n this._fixTitle()\n }\n }\n\n _fixTitle() {\n const title = this._element.getAttribute('title')\n const originalTitleType = typeof this._element.getAttribute('data-bs-original-title')\n\n if (title || originalTitleType !== 'string') {\n this._element.setAttribute('data-bs-original-title', title || '')\n if (title && !this._element.getAttribute('aria-label') && !this._element.textContent) {\n this._element.setAttribute('aria-label', title)\n }\n\n this._element.setAttribute('title', '')\n }\n }\n\n _enter(event, context) {\n const dataKey = this.constructor.DATA_KEY\n context = context || Data.getData(event.delegateTarget, dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.delegateTarget,\n this._getDelegateConfig()\n )\n Data.setData(event.delegateTarget, dataKey, context)\n }\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER\n ] = true\n }\n\n if (context.getTipElement().classList.contains(CLASS_NAME_SHOW) || context._hoverState === HOVER_STATE_SHOW) {\n context._hoverState = HOVER_STATE_SHOW\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HOVER_STATE_SHOW\n\n if (!context.config.delay || !context.config.delay.show) {\n context.show()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HOVER_STATE_SHOW) {\n context.show()\n }\n }, context.config.delay.show)\n }\n\n _leave(event, context) {\n const dataKey = this.constructor.DATA_KEY\n context = context || Data.getData(event.delegateTarget, dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.delegateTarget,\n this._getDelegateConfig()\n )\n Data.setData(event.delegateTarget, dataKey, context)\n }\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER\n ] = false\n }\n\n if (context._isWithActiveTrigger()) {\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HOVER_STATE_OUT\n\n if (!context.config.delay || !context.config.delay.hide) {\n context.hide()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HOVER_STATE_OUT) {\n context.hide()\n }\n }, context.config.delay.hide)\n }\n\n _isWithActiveTrigger() {\n for (const trigger in this._activeTrigger) {\n if (this._activeTrigger[trigger]) {\n return true\n }\n }\n\n return false\n }\n\n _getConfig(config) {\n const dataAttributes = Manipulator.getDataAttributes(this._element)\n\n Object.keys(dataAttributes).forEach(dataAttr => {\n if (DISALLOWED_ATTRIBUTES.has(dataAttr)) {\n delete dataAttributes[dataAttr]\n }\n })\n\n if (config && typeof config.container === 'object' && config.container.jquery) {\n config.container = config.container[0]\n }\n\n config = {\n ...this.constructor.Default,\n ...dataAttributes,\n ...(typeof config === 'object' && config ? config : {})\n }\n\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n }\n }\n\n if (typeof config.title === 'number') {\n config.title = config.title.toString()\n }\n\n if (typeof config.content === 'number') {\n config.content = config.content.toString()\n }\n\n typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n if (config.sanitize) {\n config.template = sanitizeHtml(config.template, config.allowList, config.sanitizeFn)\n }\n\n return config\n }\n\n _getDelegateConfig() {\n const config = {}\n\n if (this.config) {\n for (const key in this.config) {\n if (this.constructor.Default[key] !== this.config[key]) {\n config[key] = this.config[key]\n }\n }\n }\n\n return config\n }\n\n _cleanTipClass() {\n const tip = this.getTipElement()\n const tabClass = tip.getAttribute('class').match(BSCLS_PREFIX_REGEX)\n if (tabClass !== null && tabClass.length > 0) {\n tabClass.map(token => token.trim())\n .forEach(tClass => tip.classList.remove(tClass))\n }\n }\n\n _handlePopperPlacementChange(popperData) {\n const { state } = popperData\n\n if (!state) {\n return\n }\n\n this.tip = state.elements.popper\n this._cleanTipClass()\n this._addAttachmentClass(this._getAttachment(state.placement))\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY)\n const _config = typeof config === 'object' && config\n\n if (!data && /dispose|hide/.test(config)) {\n return\n }\n\n if (!data) {\n data = new Tooltip(this, _config)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Tooltip to jQuery only if jQuery is present\n */\n\nonDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Tooltip.jQueryInterface\n $.fn[NAME].Constructor = Tooltip\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Tooltip.jQueryInterface\n }\n }\n})\n\nexport default Tooltip\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery, onDOMContentLoaded } from './util/index'\nimport Data from './dom/data'\nimport SelectorEngine from './dom/selector-engine'\nimport Tooltip from './tooltip'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'popover'\nconst DATA_KEY = 'bs.popover'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst CLASS_PREFIX = 'bs-popover'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\n\nconst Default = {\n ...Tooltip.Default,\n placement: 'right',\n trigger: 'click',\n content: '',\n template: '' +\n '' +\n '' +\n '' +\n ''\n}\n\nconst DefaultType = {\n ...Tooltip.DefaultType,\n content: '(string|element|function)'\n}\n\nconst Event = {\n HIDE: `hide${EVENT_KEY}`,\n HIDDEN: `hidden${EVENT_KEY}`,\n SHOW: `show${EVENT_KEY}`,\n SHOWN: `shown${EVENT_KEY}`,\n INSERTED: `inserted${EVENT_KEY}`,\n CLICK: `click${EVENT_KEY}`,\n FOCUSIN: `focusin${EVENT_KEY}`,\n FOCUSOUT: `focusout${EVENT_KEY}`,\n MOUSEENTER: `mouseenter${EVENT_KEY}`,\n MOUSELEAVE: `mouseleave${EVENT_KEY}`\n}\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Popover extends Tooltip {\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n static get Event() {\n return Event\n }\n\n static get EVENT_KEY() {\n return EVENT_KEY\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Overrides\n\n isWithContent() {\n return this.getTitle() || this._getContent()\n }\n\n setContent() {\n const tip = this.getTipElement()\n\n // we use append for html objects to maintain js events\n this.setElementContent(SelectorEngine.findOne(SELECTOR_TITLE, tip), this.getTitle())\n let content = this._getContent()\n if (typeof content === 'function') {\n content = content.call(this._element)\n }\n\n this.setElementContent(SelectorEngine.findOne(SELECTOR_CONTENT, tip), content)\n\n tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n }\n\n // Private\n\n _addAttachmentClass(attachment) {\n this.getTipElement().classList.add(`${CLASS_PREFIX}-${this.updateAttachment(attachment)}`)\n }\n\n _getContent() {\n return this._element.getAttribute('data-bs-content') || this.config.content\n }\n\n _cleanTipClass() {\n const tip = this.getTipElement()\n const tabClass = tip.getAttribute('class').match(BSCLS_PREFIX_REGEX)\n if (tabClass !== null && tabClass.length > 0) {\n tabClass.map(token => token.trim())\n .forEach(tClass => tip.classList.remove(tClass))\n }\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY)\n const _config = typeof config === 'object' ? config : null\n\n if (!data && /dispose|hide/.test(config)) {\n return\n }\n\n if (!data) {\n data = new Popover(this, _config)\n Data.setData(this, DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Popover to jQuery only if jQuery is present\n */\n\nonDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Popover.jQueryInterface\n $.fn[NAME].Constructor = Popover\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Popover.jQueryInterface\n }\n }\n})\n\nexport default Popover\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n getjQuery,\n onDOMContentLoaded,\n getSelectorFromElement,\n getUID,\n isElement,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'scrollspy'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst Default = {\n offset: 10,\n method: 'auto',\n target: ''\n}\n\nconst DefaultType = {\n offset: 'number',\n method: 'string',\n target: '(string|element)'\n}\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_SCROLL = `scroll${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_NAV_LINKS = '.nav-link'\nconst SELECTOR_NAV_ITEMS = '.nav-item'\nconst SELECTOR_LIST_ITEMS = '.list-group-item'\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\n\nconst METHOD_OFFSET = 'offset'\nconst METHOD_POSITION = 'position'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass ScrollSpy extends BaseComponent {\n constructor(element, config) {\n super(element)\n this._scrollElement = element.tagName === 'BODY' ? window : element\n this._config = this._getConfig(config)\n this._selector = `${this._config.target} ${SELECTOR_NAV_LINKS}, ${this._config.target} ${SELECTOR_LIST_ITEMS}, ${this._config.target} .${CLASS_NAME_DROPDOWN_ITEM}`\n this._offsets = []\n this._targets = []\n this._activeTarget = null\n this._scrollHeight = 0\n\n EventHandler.on(this._scrollElement, EVENT_SCROLL, event => this._process(event))\n\n this.refresh()\n this._process()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n refresh() {\n const autoMethod = this._scrollElement === this._scrollElement.window ?\n METHOD_OFFSET :\n METHOD_POSITION\n\n const offsetMethod = this._config.method === 'auto' ?\n autoMethod :\n this._config.method\n\n const offsetBase = offsetMethod === METHOD_POSITION ?\n this._getScrollTop() :\n 0\n\n this._offsets = []\n this._targets = []\n this._scrollHeight = this._getScrollHeight()\n\n const targets = SelectorEngine.find(this._selector)\n\n targets.map(element => {\n const targetSelector = getSelectorFromElement(element)\n const target = targetSelector ? SelectorEngine.findOne(targetSelector) : null\n\n if (target) {\n const targetBCR = target.getBoundingClientRect()\n if (targetBCR.width || targetBCR.height) {\n return [\n Manipulator[offsetMethod](target).top + offsetBase,\n targetSelector\n ]\n }\n }\n\n return null\n })\n .filter(item => item)\n .sort((a, b) => a[0] - b[0])\n .forEach(item => {\n this._offsets.push(item[0])\n this._targets.push(item[1])\n })\n }\n\n dispose() {\n super.dispose()\n EventHandler.off(this._scrollElement, EVENT_KEY)\n\n this._scrollElement = null\n this._config = null\n this._selector = null\n this._offsets = null\n this._targets = null\n this._activeTarget = null\n this._scrollHeight = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...(typeof config === 'object' && config ? config : {})\n }\n\n if (typeof config.target !== 'string' && isElement(config.target)) {\n let { id } = config.target\n if (!id) {\n id = getUID(NAME)\n config.target.id = id\n }\n\n config.target = `#${id}`\n }\n\n typeCheckConfig(NAME, config, DefaultType)\n\n return config\n }\n\n _getScrollTop() {\n return this._scrollElement === window ?\n this._scrollElement.pageYOffset :\n this._scrollElement.scrollTop\n }\n\n _getScrollHeight() {\n return this._scrollElement.scrollHeight || Math.max(\n document.body.scrollHeight,\n document.documentElement.scrollHeight\n )\n }\n\n _getOffsetHeight() {\n return this._scrollElement === window ?\n window.innerHeight :\n this._scrollElement.getBoundingClientRect().height\n }\n\n _process() {\n const scrollTop = this._getScrollTop() + this._config.offset\n const scrollHeight = this._getScrollHeight()\n const maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight()\n\n if (this._scrollHeight !== scrollHeight) {\n this.refresh()\n }\n\n if (scrollTop >= maxScroll) {\n const target = this._targets[this._targets.length - 1]\n\n if (this._activeTarget !== target) {\n this._activate(target)\n }\n\n return\n }\n\n if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n this._activeTarget = null\n this._clear()\n return\n }\n\n for (let i = this._offsets.length; i--;) {\n const isActiveTarget = this._activeTarget !== this._targets[i] &&\n scrollTop >= this._offsets[i] &&\n (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1])\n\n if (isActiveTarget) {\n this._activate(this._targets[i])\n }\n }\n }\n\n _activate(target) {\n this._activeTarget = target\n\n this._clear()\n\n const queries = this._selector.split(',')\n .map(selector => `${selector}[data-bs-target=\"${target}\"],${selector}[href=\"${target}\"]`)\n\n const link = SelectorEngine.findOne(queries.join(','))\n\n if (link.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE, link.closest(SELECTOR_DROPDOWN))\n .classList.add(CLASS_NAME_ACTIVE)\n\n link.classList.add(CLASS_NAME_ACTIVE)\n } else {\n // Set triggered link as active\n link.classList.add(CLASS_NAME_ACTIVE)\n\n SelectorEngine.parents(link, SELECTOR_NAV_LIST_GROUP)\n .forEach(listGroup => {\n // Set triggered links parents as active\n // With both and markup a parent is the previous sibling of any nav ancestor\n SelectorEngine.prev(listGroup, `${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`)\n .forEach(item => item.classList.add(CLASS_NAME_ACTIVE))\n\n // Handle special case when .nav-link is inside .nav-item\n SelectorEngine.prev(listGroup, SELECTOR_NAV_ITEMS)\n .forEach(navItem => {\n SelectorEngine.children(navItem, SELECTOR_NAV_LINKS)\n .forEach(item => item.classList.add(CLASS_NAME_ACTIVE))\n })\n })\n }\n\n EventHandler.trigger(this._scrollElement, EVENT_ACTIVATE, {\n relatedTarget: target\n })\n }\n\n _clear() {\n SelectorEngine.find(this._selector)\n .filter(node => node.classList.contains(CLASS_NAME_ACTIVE))\n .forEach(node => node.classList.remove(CLASS_NAME_ACTIVE))\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY)\n const _config = typeof config === 'object' && config\n\n if (!data) {\n data = new ScrollSpy(this, _config)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n SelectorEngine.find(SELECTOR_DATA_SPY)\n .forEach(spy => new ScrollSpy(spy, Manipulator.getDataAttributes(spy)))\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .ScrollSpy to jQuery only if jQuery is present\n */\n\nonDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = ScrollSpy.jQueryInterface\n $.fn[NAME].Constructor = ScrollSpy\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return ScrollSpy.jQueryInterface\n }\n }\n})\n\nexport default ScrollSpy\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n getjQuery,\n onDOMContentLoaded,\n TRANSITION_END,\n emulateTransitionEnd,\n getElementFromSelector,\n getTransitionDurationFromElement,\n reflow\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tab'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_DISABLED = 'disabled'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ACTIVE_UL = ':scope > li > .active'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\nconst SELECTOR_DROPDOWN_ACTIVE_CHILD = ':scope > .dropdown-menu .active'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tab extends BaseComponent {\n // Getters\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n show() {\n if ((this._element.parentNode &&\n this._element.parentNode.nodeType === Node.ELEMENT_NODE &&\n this._element.classList.contains(CLASS_NAME_ACTIVE)) ||\n this._element.classList.contains(CLASS_NAME_DISABLED)) {\n return\n }\n\n let previous\n const target = getElementFromSelector(this._element)\n const listElement = this._element.closest(SELECTOR_NAV_LIST_GROUP)\n\n if (listElement) {\n const itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE\n previous = SelectorEngine.find(itemSelector, listElement)\n previous = previous[previous.length - 1]\n }\n\n let hideEvent = null\n\n if (previous) {\n hideEvent = EventHandler.trigger(previous, EVENT_HIDE, {\n relatedTarget: this._element\n })\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n relatedTarget: previous\n })\n\n if (showEvent.defaultPrevented || (hideEvent !== null && hideEvent.defaultPrevented)) {\n return\n }\n\n this._activate(this._element, listElement)\n\n const complete = () => {\n EventHandler.trigger(previous, EVENT_HIDDEN, {\n relatedTarget: this._element\n })\n EventHandler.trigger(this._element, EVENT_SHOWN, {\n relatedTarget: previous\n })\n }\n\n if (target) {\n this._activate(target, target.parentNode, complete)\n } else {\n complete()\n }\n }\n\n // Private\n\n _activate(element, container, callback) {\n const activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ?\n SelectorEngine.find(SELECTOR_ACTIVE_UL, container) :\n SelectorEngine.children(container, SELECTOR_ACTIVE)\n\n const active = activeElements[0]\n const isTransitioning = callback && (active && active.classList.contains(CLASS_NAME_FADE))\n\n const complete = () => this._transitionComplete(element, active, callback)\n\n if (active && isTransitioning) {\n const transitionDuration = getTransitionDurationFromElement(active)\n active.classList.remove(CLASS_NAME_SHOW)\n\n EventHandler.one(active, TRANSITION_END, complete)\n emulateTransitionEnd(active, transitionDuration)\n } else {\n complete()\n }\n }\n\n _transitionComplete(element, active, callback) {\n if (active) {\n active.classList.remove(CLASS_NAME_ACTIVE)\n\n const dropdownChild = SelectorEngine.findOne(SELECTOR_DROPDOWN_ACTIVE_CHILD, active.parentNode)\n\n if (dropdownChild) {\n dropdownChild.classList.remove(CLASS_NAME_ACTIVE)\n }\n\n if (active.getAttribute('role') === 'tab') {\n active.setAttribute('aria-selected', false)\n }\n }\n\n element.classList.add(CLASS_NAME_ACTIVE)\n if (element.getAttribute('role') === 'tab') {\n element.setAttribute('aria-selected', true)\n }\n\n reflow(element)\n\n if (element.classList.contains(CLASS_NAME_FADE)) {\n element.classList.add(CLASS_NAME_SHOW)\n }\n\n if (element.parentNode && element.parentNode.classList.contains(CLASS_NAME_DROPDOWN_MENU)) {\n const dropdownElement = element.closest(SELECTOR_DROPDOWN)\n\n if (dropdownElement) {\n SelectorEngine.find(SELECTOR_DROPDOWN_TOGGLE)\n .forEach(dropdown => dropdown.classList.add(CLASS_NAME_ACTIVE))\n }\n\n element.setAttribute('aria-expanded', true)\n }\n\n if (callback) {\n callback()\n }\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Data.getData(this, DATA_KEY) || new Tab(this)\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n event.preventDefault()\n\n const data = Data.getData(this, DATA_KEY) || new Tab(this)\n data.show()\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Tab to jQuery only if jQuery is present\n */\n\nonDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Tab.jQueryInterface\n $.fn[NAME].Constructor = Tab\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Tab.jQueryInterface\n }\n }\n})\n\nexport default Tab\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n getjQuery,\n onDOMContentLoaded,\n TRANSITION_END,\n emulateTransitionEnd,\n getTransitionDurationFromElement,\n reflow,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'toast'\nconst DATA_KEY = 'bs.toast'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_HIDE = 'hide'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\n\nconst DefaultType = {\n animation: 'boolean',\n autohide: 'boolean',\n delay: 'number'\n}\n\nconst Default = {\n animation: true,\n autohide: true,\n delay: 5000\n}\n\nconst SELECTOR_DATA_DISMISS = '[data-bs-dismiss=\"toast\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Toast extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._config = this._getConfig(config)\n this._timeout = null\n this._setListeners()\n }\n\n // Getters\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get Default() {\n return Default\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n show() {\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n this._clearTimeout()\n\n if (this._config.animation) {\n this._element.classList.add(CLASS_NAME_FADE)\n }\n\n const complete = () => {\n this._element.classList.remove(CLASS_NAME_SHOWING)\n this._element.classList.add(CLASS_NAME_SHOW)\n\n EventHandler.trigger(this._element, EVENT_SHOWN)\n\n if (this._config.autohide) {\n this._timeout = setTimeout(() => {\n this.hide()\n }, this._config.delay)\n }\n }\n\n this._element.classList.remove(CLASS_NAME_HIDE)\n reflow(this._element)\n this._element.classList.add(CLASS_NAME_SHOWING)\n if (this._config.animation) {\n const transitionDuration = getTransitionDurationFromElement(this._element)\n\n EventHandler.one(this._element, TRANSITION_END, complete)\n emulateTransitionEnd(this._element, transitionDuration)\n } else {\n complete()\n }\n }\n\n hide() {\n if (!this._element.classList.contains(CLASS_NAME_SHOW)) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n const complete = () => {\n this._element.classList.add(CLASS_NAME_HIDE)\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n this._element.classList.remove(CLASS_NAME_SHOW)\n if (this._config.animation) {\n const transitionDuration = getTransitionDurationFromElement(this._element)\n\n EventHandler.one(this._element, TRANSITION_END, complete)\n emulateTransitionEnd(this._element, transitionDuration)\n } else {\n complete()\n }\n }\n\n dispose() {\n this._clearTimeout()\n\n if (this._element.classList.contains(CLASS_NAME_SHOW)) {\n this._element.classList.remove(CLASS_NAME_SHOW)\n }\n\n EventHandler.off(this._element, EVENT_CLICK_DISMISS)\n\n super.dispose()\n this._config = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...(typeof config === 'object' && config ? config : {})\n }\n\n typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n return config\n }\n\n _setListeners() {\n EventHandler.on(this._element, EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, () => this.hide())\n }\n\n _clearTimeout() {\n clearTimeout(this._timeout)\n this._timeout = null\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY)\n const _config = typeof config === 'object' && config\n\n if (!data) {\n data = new Toast(this, _config)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](this)\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Toast to jQuery only if jQuery is present\n */\n\nonDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Toast.jQueryInterface\n $.fn[NAME].Constructor = Toast\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Toast.jQueryInterface\n }\n }\n})\n\nexport default Toast\n"],"names":["MAX_UID","MILLISECONDS_MULTIPLIER","TRANSITION_END","toType","obj","undefined","toString","call","match","toLowerCase","getUID","prefix","Math","floor","random","document","getElementById","getSelector","element","selector","getAttribute","hrefAttr","trim","getSelectorFromElement","querySelector","getElementFromSelector","getTransitionDurationFromElement","window","getComputedStyle","transitionDuration","transitionDelay","floatTransitionDuration","Number","parseFloat","floatTransitionDelay","split","triggerTransitionEnd","dispatchEvent","Event","isElement","nodeType","emulateTransitionEnd","duration","called","durationPadding","emulatedDuration","listener","removeEventListener","addEventListener","setTimeout","typeCheckConfig","componentName","config","configTypes","Object","keys","forEach","property","expectedTypes","value","valueType","RegExp","test","Error","toUpperCase","isVisible","style","parentNode","elementStyle","parentNodeStyle","display","visibility","findShadowRoot","documentElement","attachShadow","getRootNode","root","ShadowRoot","noop","reflow","offsetHeight","getjQuery","jQuery","body","hasAttribute","onDOMContentLoaded","callback","readyState","isRTL","dir","mapData","storeData","id","set","key","data","bsKey","get","keyProperties","delete","Data","setData","instance","getData","removeData","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","nativeEvents","Set","getUidEvent","uid","getEvent","bootstrapHandler","fn","handler","event","delegateTarget","oneOff","EventHandler","off","type","apply","bootstrapDelegationHandler","domElements","querySelectorAll","target","i","length","findHandler","events","delegationSelector","uidEventList","len","originalHandler","normalizeParams","originalTypeEvent","delegationFn","delegation","typeEvent","replace","custom","isNative","has","addHandler","handlers","previousFn","removeHandler","Boolean","removeNamespacedHandlers","namespace","storeElementEvent","handlerKey","includes","on","one","inNamespace","isNamespace","startsWith","elementEvent","slice","keyHandlers","trigger","args","$","jQueryEvent","bubbles","nativeDispatch","defaultPrevented","evt","isPropagationStopped","isImmediatePropagationStopped","isDefaultPrevented","createEvent","initEvent","CustomEvent","cancelable","defineProperty","preventDefault","VERSION","BaseComponent","_element","constructor","DATA_KEY","dispose","getInstance","NAME","EVENT_KEY","DATA_API_KEY","SELECTOR_DISMISS","EVENT_CLOSE","EVENT_CLOSED","EVENT_CLICK_DATA_API","CLASSNAME_ALERT","CLASSNAME_FADE","CLASSNAME_SHOW","Alert","close","rootElement","_getRootElement","customEvent","_triggerCloseEvent","_removeElement","closest","classList","remove","contains","_destroyElement","removeChild","jQueryInterface","each","handleDismiss","alertInstance","JQUERY_NO_CONFLICT","Constructor","noConflict","CLASS_NAME_ACTIVE","SELECTOR_DATA_TOGGLE","Button","toggle","setAttribute","button","normalizeData","val","normalizeDataKey","chr","Manipulator","setDataAttribute","removeDataAttribute","removeAttribute","getDataAttributes","attributes","dataset","filter","pureKey","charAt","getDataAttribute","offset","rect","getBoundingClientRect","top","scrollTop","left","scrollLeft","position","offsetTop","offsetLeft","NODE_TEXT","SelectorEngine","matches","find","concat","Element","prototype","findOne","children","child","parents","ancestor","Node","ELEMENT_NODE","push","prev","previous","previousElementSibling","next","nextElementSibling","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","TOUCHEVENT_COMPAT_WAIT","SWIPE_THRESHOLD","Default","interval","keyboard","slide","pause","wrap","touch","DefaultType","DIRECTION_NEXT","DIRECTION_PREV","DIRECTION_LEFT","DIRECTION_RIGHT","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERDOWN","EVENT_POINTERUP","EVENT_DRAG_START","EVENT_LOAD_DATA_API","CLASS_NAME_CAROUSEL","CLASS_NAME_SLIDE","CLASS_NAME_END","CLASS_NAME_START","CLASS_NAME_NEXT","CLASS_NAME_PREV","CLASS_NAME_POINTER_EVENT","SELECTOR_ACTIVE","SELECTOR_ACTIVE_ITEM","SELECTOR_ITEM","SELECTOR_ITEM_IMG","SELECTOR_NEXT_PREV","SELECTOR_INDICATORS","SELECTOR_DATA_SLIDE","SELECTOR_DATA_RIDE","PointerType","TOUCH","PEN","Carousel","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","touchStartX","touchDeltaX","_config","_getConfig","_indicatorsElement","_touchSupported","navigator","maxTouchPoints","_pointerEvent","PointerEvent","_addEventListeners","_slide","nextWhenVisible","hidden","cycle","clearInterval","_updateInterval","setInterval","visibilityState","bind","to","index","activeIndex","_getItemIndex","direction","_handleSwipe","absDeltax","abs","_keydown","_addTouchEventListeners","start","pointerType","clientX","touches","move","end","clearTimeout","itemImg","e","add","tagName","indexOf","_getItemByDirection","activeElement","isNextDirection","isPrevDirection","lastItemIndex","isGoingToWrap","delta","itemIndex","_triggerSlideEvent","relatedTarget","eventDirectionName","targetIndex","fromIndex","from","_setActiveIndicatorElement","indicators","nextIndicator","elementInterval","parseInt","defaultInterval","activeElementIndex","nextElement","nextElementIndex","isCycling","directionalClassName","orderClassName","slideEvent","carouselInterface","action","TypeError","ride","dataApiClickHandler","slideIndex","carousels","parent","EVENT_SHOW","EVENT_SHOWN","EVENT_HIDE","EVENT_HIDDEN","CLASS_NAME_SHOW","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_COLLAPSED","WIDTH","HEIGHT","SELECTOR_ACTIVES","Collapse","_isTransitioning","_triggerArray","toggleList","elem","filterElement","foundElem","_selector","_parent","_getParent","_addAriaAndCollapsedClass","hide","show","actives","activesData","container","tempActiveData","startEvent","elemActive","collapseInterface","dimension","_getDimension","setTransitioning","complete","capitalizedDimension","scrollSize","triggerArrayLength","isTransitioning","jquery","selected","triggerArray","isOpen","triggerData","selectorElements","ESCAPE_KEY","SPACE_KEY","TAB_KEY","ARROW_UP_KEY","ARROW_DOWN_KEY","RIGHT_MOUSE_BUTTON","REGEXP_KEYDOWN","EVENT_CLICK","EVENT_KEYDOWN_DATA_API","EVENT_KEYUP_DATA_API","CLASS_NAME_DISABLED","CLASS_NAME_DROPUP","CLASS_NAME_DROPEND","CLASS_NAME_DROPSTART","CLASS_NAME_NAVBAR","SELECTOR_FORM_CHILD","SELECTOR_MENU","SELECTOR_NAVBAR_NAV","SELECTOR_VISIBLE_ITEMS","PLACEMENT_TOP","PLACEMENT_TOPEND","PLACEMENT_BOTTOM","PLACEMENT_BOTTOMEND","PLACEMENT_RIGHT","PLACEMENT_LEFT","flip","boundary","reference","popperConfig","Dropdown","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","disabled","isActive","clearMenus","getParentFromElement","showEvent","Popper","referenceElement","_getPopperConfig","focus","hideEvent","destroy","update","stopPropagation","_getPlacement","parentDropdown","isEnd","getPropertyValue","placement","modifiers","name","options","altBoundary","rootBoundary","enabled","dropdownInterface","toggles","context","clickEvent","dropdownMenu","dataApiKeydownHandler","items","backdrop","EVENT_HIDE_PREVENTED","EVENT_FOCUSIN","EVENT_RESIZE","EVENT_CLICK_DISMISS","EVENT_KEYDOWN_DISMISS","EVENT_MOUSEUP_DISMISS","EVENT_MOUSEDOWN_DISMISS","CLASS_NAME_SCROLLBAR_MEASURER","CLASS_NAME_BACKDROP","CLASS_NAME_OPEN","CLASS_NAME_FADE","CLASS_NAME_STATIC","SELECTOR_DIALOG","SELECTOR_MODAL_BODY","SELECTOR_DATA_DISMISS","SELECTOR_FIXED_CONTENT","SELECTOR_STICKY_CONTENT","Modal","_dialog","_backdrop","_isShown","_isBodyOverflowing","_ignoreBackdropClick","_scrollbarWidth","_checkScrollbar","_setScrollbar","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","transition","_hideModal","htmlElement","handleUpdate","modalBody","appendChild","_enforceFocus","transitionComplete","_triggerBackdropTransition","_resetAdjustments","_resetScrollbar","_removeBackdrop","animate","createElement","className","currentTarget","backdropTransitionDuration","callbackRemove","isModalOverflowing","scrollHeight","clientHeight","overflowY","modalTransitionDuration","paddingLeft","paddingRight","round","right","innerWidth","_getScrollbarWidth","actualPadding","calculatedPadding","actualMargin","marginRight","calculatedMargin","padding","margin","scrollDiv","scrollbarWidth","width","clientWidth","uriAttrs","ARIA_ATTRIBUTE_PATTERN","SAFE_URL_PATTERN","DATA_URL_PATTERN","allowedAttribute","attr","allowedAttributeList","attrName","nodeName","nodeValue","regExp","attrRegex","DefaultAllowlist","a","area","b","br","col","code","div","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","p","pre","s","small","span","sub","sup","strong","u","ul","sanitizeHtml","unsafeHtml","allowList","sanitizeFn","domParser","DOMParser","createdDocument","parseFromString","allowlistKeys","elements","el","elName","attributeList","allowedAttributes","innerHTML","CLASS_PREFIX","BSCLS_PREFIX_REGEX","DISALLOWED_ATTRIBUTES","animation","template","title","delay","html","fallbackPlacements","customClass","sanitize","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","HIDE","HIDDEN","SHOW","SHOWN","INSERTED","CLICK","FOCUSIN","FOCUSOUT","MOUSEENTER","MOUSELEAVE","CLASS_NAME_MODAL","HOVER_STATE_SHOW","HOVER_STATE_OUT","SELECTOR_TOOLTIP_INNER","TRIGGER_HOVER","TRIGGER_FOCUS","TRIGGER_CLICK","TRIGGER_MANUAL","Tooltip","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","enable","disable","toggleEnabled","dataKey","_getDelegateConfig","click","_isWithActiveTrigger","_enter","_leave","getTipElement","_hideModalHandler","isWithContent","shadowRoot","isInTheDom","ownerDocument","tipId","setContent","attachment","_getAttachment","_addAttachmentClass","_getContainer","prevHoverState","_cleanTipClass","getTitle","setElementContent","content","textContent","updateAttachment","flipModifier","defaultBsConfig","phase","_handlePopperPlacementChange","onFirstUpdate","triggers","eventIn","eventOut","_fixTitle","originalTitleType","dataAttributes","dataAttr","tabClass","map","token","tClass","popperData","state","popper","SELECTOR_TITLE","SELECTOR_CONTENT","Popover","_getContent","method","EVENT_ACTIVATE","EVENT_SCROLL","CLASS_NAME_DROPDOWN_ITEM","SELECTOR_DATA_SPY","SELECTOR_NAV_LIST_GROUP","SELECTOR_NAV_LINKS","SELECTOR_NAV_ITEMS","SELECTOR_LIST_ITEMS","SELECTOR_DROPDOWN","SELECTOR_DROPDOWN_TOGGLE","METHOD_OFFSET","METHOD_POSITION","ScrollSpy","_scrollElement","_offsets","_targets","_activeTarget","_scrollHeight","_process","refresh","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","targets","targetSelector","targetBCR","height","item","sort","pageYOffset","max","_getOffsetHeight","innerHeight","maxScroll","_activate","_clear","isActiveTarget","queries","link","join","listGroup","navItem","node","spy","CLASS_NAME_DROPDOWN_MENU","SELECTOR_ACTIVE_UL","SELECTOR_DROPDOWN_ACTIVE_CHILD","Tab","listElement","itemSelector","activeElements","active","_transitionComplete","dropdownChild","dropdownElement","dropdown","CLASS_NAME_HIDE","CLASS_NAME_SHOWING","autohide","Toast","_clearTimeout"],"mappings":"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"} \ No newline at end of file diff --git a/dist/js/bootstrap.esm.min.js b/dist/js/bootstrap.esm.min.js deleted file mode 100644 index c4d0ce306..000000000 --- a/dist/js/bootstrap.esm.min.js +++ /dev/null @@ -1,7 +0,0 @@ -/*! - * Bootstrap v5.0.0-beta1 (https://getbootstrap.com/) - * Copyright 2011-2020 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */ -import*as Popper from"@popperjs/core";import{createPopper}from"@popperjs/core";function _defineProperties(e,t){for(var n=0;n0,i._pointerEvent=Boolean(window.PointerEvent),i._addEventListeners(),i}_inheritsLoose(t,e);var n=t.prototype;return n.next=function(){this._isSliding||this._slide(DIRECTION_NEXT)},n.nextWhenVisible=function(){!document.hidden&&isVisible(this._element)&&this.next()},n.prev=function(){this._isSliding||this._slide(DIRECTION_PREV)},n.pause=function(e){e||(this._isPaused=!0),SelectorEngine.findOne(SELECTOR_NEXT_PREV,this._element)&&(triggerTransitionEnd(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null},n.cycle=function(e){e||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config&&this._config.interval&&!this._isPaused&&(this._updateInterval(),this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))},n.to=function(e){var t=this;this._activeElement=SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM,this._element);var n=this._getItemIndex(this._activeElement);if(!(e>this._items.length-1||e<0))if(this._isSliding)EventHandler.one(this._element,EVENT_SLID,(function(){return t.to(e)}));else{if(n===e)return this.pause(),void this.cycle();var i=e>n?DIRECTION_NEXT:DIRECTION_PREV;this._slide(i,this._items[e])}},n.dispose=function(){e.prototype.dispose.call(this),EventHandler.off(this._element,EVENT_KEY$2),this._items=null,this._config=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null},n._getConfig=function(e){return e=_extends({},Default,e),typeCheckConfig(NAME$2,e,DefaultType),e},n._handleSwipe=function(){var e=Math.abs(this.touchDeltaX);if(!(e<=SWIPE_THRESHOLD)){var t=e/this.touchDeltaX;this.touchDeltaX=0,t>0&&this.prev(),t<0&&this.next()}},n._addEventListeners=function(){var e=this;this._config.keyboard&&EventHandler.on(this._element,EVENT_KEYDOWN,(function(t){return e._keydown(t)})),"hover"===this._config.pause&&(EventHandler.on(this._element,EVENT_MOUSEENTER,(function(t){return e.pause(t)})),EventHandler.on(this._element,EVENT_MOUSELEAVE,(function(t){return e.cycle(t)}))),this._config.touch&&this._touchSupported&&this._addTouchEventListeners()},n._addTouchEventListeners=function(){var e=this,t=function(t){e._pointerEvent&&PointerType[t.pointerType.toUpperCase()]?e.touchStartX=t.clientX:e._pointerEvent||(e.touchStartX=t.touches[0].clientX)},n=function(t){e._pointerEvent&&PointerType[t.pointerType.toUpperCase()]&&(e.touchDeltaX=t.clientX-e.touchStartX),e._handleSwipe(),"hover"===e._config.pause&&(e.pause(),e.touchTimeout&&clearTimeout(e.touchTimeout),e.touchTimeout=setTimeout((function(t){return e.cycle(t)}),TOUCHEVENT_COMPAT_WAIT+e._config.interval))};SelectorEngine.find(SELECTOR_ITEM_IMG,this._element).forEach((function(e){EventHandler.on(e,EVENT_DRAG_START,(function(e){return e.preventDefault()}))})),this._pointerEvent?(EventHandler.on(this._element,EVENT_POINTERDOWN,(function(e){return t(e)})),EventHandler.on(this._element,EVENT_POINTERUP,(function(e){return n(e)})),this._element.classList.add(CLASS_NAME_POINTER_EVENT)):(EventHandler.on(this._element,EVENT_TOUCHSTART,(function(e){return t(e)})),EventHandler.on(this._element,EVENT_TOUCHMOVE,(function(t){return function(t){t.touches&&t.touches.length>1?e.touchDeltaX=0:e.touchDeltaX=t.touches[0].clientX-e.touchStartX}(t)})),EventHandler.on(this._element,EVENT_TOUCHEND,(function(e){return n(e)})))},n._keydown=function(e){if(!/input|textarea/i.test(e.target.tagName))switch(e.key){case ARROW_LEFT_KEY:e.preventDefault(),this.prev();break;case ARROW_RIGHT_KEY:e.preventDefault(),this.next()}},n._getItemIndex=function(e){return this._items=e&&e.parentNode?SelectorEngine.find(SELECTOR_ITEM,e.parentNode):[],this._items.indexOf(e)},n._getItemByDirection=function(e,t){var n=e===DIRECTION_NEXT,i=e===DIRECTION_PREV,o=this._getItemIndex(t),r=this._items.length-1;if((i&&0===o||n&&o===r)&&!this._config.wrap)return t;var a=(o+(e===DIRECTION_PREV?-1:1))%this._items.length;return-1===a?this._items[this._items.length-1]:this._items[a]},n._triggerSlideEvent=function(e,t){var n=this._getItemIndex(e),i=this._getItemIndex(SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM,this._element));return EventHandler.trigger(this._element,EVENT_SLIDE,{relatedTarget:e,direction:t,from:i,to:n})},n._setActiveIndicatorElement=function(e){if(this._indicatorsElement){for(var t=SelectorEngine.find(SELECTOR_ACTIVE,this._indicatorsElement),n=0;n0)for(var i=0;i0&&r--,e.key===ARROW_DOWN_KEY&&rdocument.documentElement.clientHeight;t||(this._element.style.overflowY="hidden"),this._element.classList.add(CLASS_NAME_STATIC);var n=getTransitionDurationFromElement(this._dialog);EventHandler.off(this._element,TRANSITION_END),EventHandler.one(this._element,TRANSITION_END,(function(){e._element.classList.remove(CLASS_NAME_STATIC),t||(EventHandler.one(e._element,TRANSITION_END,(function(){e._element.style.overflowY=""})),emulateTransitionEnd(e._element,n))})),emulateTransitionEnd(this._element,n),this._element.focus()}},n._adjustDialog=function(){var e=this._element.scrollHeight>document.documentElement.clientHeight;(!this._isBodyOverflowing&&e&&!isRTL||this._isBodyOverflowing&&!e&&isRTL)&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),(this._isBodyOverflowing&&!e&&!isRTL||!this._isBodyOverflowing&&e&&isRTL)&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},n._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},n._checkScrollbar=function(){var e=document.body.getBoundingClientRect();this._isBodyOverflowing=Math.round(e.left+e.right)',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",container:!1,fallbackPlacements:null,boundary:"clippingParents",customClass:"",sanitize:!0,sanitizeFn:null,allowList:DefaultAllowlist,popperConfig:null},Event$1={HIDE:"hide"+EVENT_KEY$6,HIDDEN:"hidden"+EVENT_KEY$6,SHOW:"show"+EVENT_KEY$6,SHOWN:"shown"+EVENT_KEY$6,INSERTED:"inserted"+EVENT_KEY$6,CLICK:"click"+EVENT_KEY$6,FOCUSIN:"focusin"+EVENT_KEY$6,FOCUSOUT:"focusout"+EVENT_KEY$6,MOUSEENTER:"mouseenter"+EVENT_KEY$6,MOUSELEAVE:"mouseleave"+EVENT_KEY$6},CLASS_NAME_FADE$1="fade",CLASS_NAME_MODAL="modal",CLASS_NAME_SHOW$3="show",HOVER_STATE_SHOW="show",HOVER_STATE_OUT="out",SELECTOR_TOOLTIP_INNER=".tooltip-inner",TRIGGER_HOVER="hover",TRIGGER_FOCUS="focus",TRIGGER_CLICK="click",TRIGGER_MANUAL="manual",Tooltip=function(e){function t(t,n){var i;if(void 0===Popper)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");return(i=e.call(this,t)||this)._isEnabled=!0,i._timeout=0,i._hoverState="",i._activeTrigger={},i._popper=null,i.config=i._getConfig(n),i.tip=null,i._setListeners(),i}_inheritsLoose(t,e);var n=t.prototype;return n.enable=function(){this._isEnabled=!0},n.disable=function(){this._isEnabled=!1},n.toggleEnabled=function(){this._isEnabled=!this._isEnabled},n.toggle=function(e){if(this._isEnabled)if(e){var t=this.constructor.DATA_KEY,n=Data.getData(e.delegateTarget,t);n||(n=new this.constructor(e.delegateTarget,this._getDelegateConfig()),Data.setData(e.delegateTarget,t,n)),n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)}else{if(this.getTipElement().classList.contains(CLASS_NAME_SHOW$3))return void this._leave(null,this);this._enter(null,this)}},n.dispose=function(){clearTimeout(this._timeout),EventHandler.off(this._element,this.constructor.EVENT_KEY),EventHandler.off(this._element.closest("."+CLASS_NAME_MODAL),"hide.bs.modal",this._hideModalHandler),this.tip&&this.tip.parentNode.removeChild(this.tip),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,this._popper&&this._popper.destroy(),this._popper=null,this.config=null,this.tip=null,e.prototype.dispose.call(this)},n.show=function(){var e=this;if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(this.isWithContent()&&this._isEnabled){var t=EventHandler.trigger(this._element,this.constructor.Event.SHOW),n=findShadowRoot(this._element),i=null===n?this._element.ownerDocument.documentElement.contains(this._element):n.contains(this._element);if(t.defaultPrevented||!i)return;var o=this.getTipElement(),r=getUID(this.constructor.NAME);o.setAttribute("id",r),this._element.setAttribute("aria-describedby",r),this.setContent(),this.config.animation&&o.classList.add(CLASS_NAME_FADE$1);var a="function"==typeof this.config.placement?this.config.placement.call(this,o,this._element):this.config.placement,s=this._getAttachment(a);this._addAttachmentClass(s);var l=this._getContainer();Data.setData(o,this.constructor.DATA_KEY,this),this._element.ownerDocument.documentElement.contains(this.tip)||l.appendChild(o),EventHandler.trigger(this._element,this.constructor.Event.INSERTED),this._popper=createPopper(this._element,o,this._getPopperConfig(s)),o.classList.add(CLASS_NAME_SHOW$3);var E,_,c="function"==typeof this.config.customClass?this.config.customClass():this.config.customClass;if(c)(E=o.classList).add.apply(E,c.split(" "));if("ontouchstart"in document.documentElement)(_=[]).concat.apply(_,document.body.children).forEach((function(e){EventHandler.on(e,"mouseover",noop())}));var u=function(){var t=e._hoverState;e._hoverState=null,EventHandler.trigger(e._element,e.constructor.Event.SHOWN),t===HOVER_STATE_OUT&&e._leave(null,e)};if(this.tip.classList.contains(CLASS_NAME_FADE$1)){var d=getTransitionDurationFromElement(this.tip);EventHandler.one(this.tip,TRANSITION_END,u),emulateTransitionEnd(this.tip,d)}else u()}},n.hide=function(){var e=this;if(this._popper){var t=this.getTipElement(),n=function(){e._hoverState!==HOVER_STATE_SHOW&&t.parentNode&&t.parentNode.removeChild(t),e._cleanTipClass(),e._element.removeAttribute("aria-describedby"),EventHandler.trigger(e._element,e.constructor.Event.HIDDEN),e._popper&&(e._popper.destroy(),e._popper=null)};if(!EventHandler.trigger(this._element,this.constructor.Event.HIDE).defaultPrevented){var i;if(t.classList.remove(CLASS_NAME_SHOW$3),"ontouchstart"in document.documentElement)(i=[]).concat.apply(i,document.body.children).forEach((function(e){return EventHandler.off(e,"mouseover",noop)}));if(this._activeTrigger[TRIGGER_CLICK]=!1,this._activeTrigger[TRIGGER_FOCUS]=!1,this._activeTrigger[TRIGGER_HOVER]=!1,this.tip.classList.contains(CLASS_NAME_FADE$1)){var o=getTransitionDurationFromElement(t);EventHandler.one(t,TRANSITION_END,n),emulateTransitionEnd(t,o)}else n();this._hoverState=""}}},n.update=function(){null!==this._popper&&this._popper.update()},n.isWithContent=function(){return Boolean(this.getTitle())},n.getTipElement=function(){if(this.tip)return this.tip;var e=document.createElement("div");return e.innerHTML=this.config.template,this.tip=e.children[0],this.tip},n.setContent=function(){var e=this.getTipElement();this.setElementContent(SelectorEngine.findOne(SELECTOR_TOOLTIP_INNER,e),this.getTitle()),e.classList.remove(CLASS_NAME_FADE$1,CLASS_NAME_SHOW$3)},n.setElementContent=function(e,t){if(null!==e)return"object"==typeof t&&isElement(t)?(t.jquery&&(t=t[0]),void(this.config.html?t.parentNode!==e&&(e.innerHTML="",e.appendChild(t)):e.textContent=t.textContent)):void(this.config.html?(this.config.sanitize&&(t=sanitizeHtml(t,this.config.allowList,this.config.sanitizeFn)),e.innerHTML=t):e.textContent=t)},n.getTitle=function(){var e=this._element.getAttribute("data-bs-original-title");return e||(e="function"==typeof this.config.title?this.config.title.call(this._element):this.config.title),e},n.updateAttachment=function(e){return"right"===e?"end":"left"===e?"start":e},n._getPopperConfig=function(e){var t=this,n={name:"flip",options:{altBoundary:!0}};return this.config.fallbackPlacements&&(n.options.fallbackPlacements=this.config.fallbackPlacements),_extends({},{placement:e,modifiers:[n,{name:"preventOverflow",options:{rootBoundary:this.config.boundary}},{name:"arrow",options:{element:"."+this.constructor.NAME+"-arrow"}},{name:"onChange",enabled:!0,phase:"afterWrite",fn:function(e){return t._handlePopperPlacementChange(e)}}],onFirstUpdate:function(e){e.options.placement!==e.placement&&t._handlePopperPlacementChange(e)}},this.config.popperConfig)},n._addAttachmentClass=function(e){this.getTipElement().classList.add(CLASS_PREFIX+"-"+this.updateAttachment(e))},n._getContainer=function(){return!1===this.config.container?document.body:isElement(this.config.container)?this.config.container:SelectorEngine.findOne(this.config.container)},n._getAttachment=function(e){return AttachmentMap[e.toUpperCase()]},n._setListeners=function(){var e=this;this.config.trigger.split(" ").forEach((function(t){if("click"===t)EventHandler.on(e._element,e.constructor.Event.CLICK,e.config.selector,(function(t){return e.toggle(t)}));else if(t!==TRIGGER_MANUAL){var n=t===TRIGGER_HOVER?e.constructor.Event.MOUSEENTER:e.constructor.Event.FOCUSIN,i=t===TRIGGER_HOVER?e.constructor.Event.MOUSELEAVE:e.constructor.Event.FOCUSOUT;EventHandler.on(e._element,n,e.config.selector,(function(t){return e._enter(t)})),EventHandler.on(e._element,i,e.config.selector,(function(t){return e._leave(t)}))}})),this._hideModalHandler=function(){e._element&&e.hide()},EventHandler.on(this._element.closest("."+CLASS_NAME_MODAL),"hide.bs.modal",this._hideModalHandler),this.config.selector?this.config=_extends({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},n._fixTitle=function(){var e=this._element.getAttribute("title"),t=typeof this._element.getAttribute("data-bs-original-title");(e||"string"!==t)&&(this._element.setAttribute("data-bs-original-title",e||""),!e||this._element.getAttribute("aria-label")||this._element.textContent||this._element.setAttribute("aria-label",e),this._element.setAttribute("title",""))},n._enter=function(e,t){var n=this.constructor.DATA_KEY;(t=t||Data.getData(e.delegateTarget,n))||(t=new this.constructor(e.delegateTarget,this._getDelegateConfig()),Data.setData(e.delegateTarget,n,t)),e&&(t._activeTrigger["focusin"===e.type?TRIGGER_FOCUS:TRIGGER_HOVER]=!0),t.getTipElement().classList.contains(CLASS_NAME_SHOW$3)||t._hoverState===HOVER_STATE_SHOW?t._hoverState=HOVER_STATE_SHOW:(clearTimeout(t._timeout),t._hoverState=HOVER_STATE_SHOW,t.config.delay&&t.config.delay.show?t._timeout=setTimeout((function(){t._hoverState===HOVER_STATE_SHOW&&t.show()}),t.config.delay.show):t.show())},n._leave=function(e,t){var n=this.constructor.DATA_KEY;(t=t||Data.getData(e.delegateTarget,n))||(t=new this.constructor(e.delegateTarget,this._getDelegateConfig()),Data.setData(e.delegateTarget,n,t)),e&&(t._activeTrigger["focusout"===e.type?TRIGGER_FOCUS:TRIGGER_HOVER]=!1),t._isWithActiveTrigger()||(clearTimeout(t._timeout),t._hoverState=HOVER_STATE_OUT,t.config.delay&&t.config.delay.hide?t._timeout=setTimeout((function(){t._hoverState===HOVER_STATE_OUT&&t.hide()}),t.config.delay.hide):t.hide())},n._isWithActiveTrigger=function(){for(var e in this._activeTrigger)if(this._activeTrigger[e])return!0;return!1},n._getConfig=function(e){var t=Manipulator.getDataAttributes(this._element);return Object.keys(t).forEach((function(e){DISALLOWED_ATTRIBUTES.has(e)&&delete t[e]})),e&&"object"==typeof e.container&&e.container.jquery&&(e.container=e.container[0]),"number"==typeof(e=_extends({},this.constructor.Default,t,"object"==typeof e&&e?e:{})).delay&&(e.delay={show:e.delay,hide:e.delay}),"number"==typeof e.title&&(e.title=e.title.toString()),"number"==typeof e.content&&(e.content=e.content.toString()),typeCheckConfig(NAME$6,e,this.constructor.DefaultType),e.sanitize&&(e.template=sanitizeHtml(e.template,e.allowList,e.sanitizeFn)),e},n._getDelegateConfig=function(){var e={};if(this.config)for(var t in this.config)this.constructor.Default[t]!==this.config[t]&&(e[t]=this.config[t]);return e},n._cleanTipClass=function(){var e=this.getTipElement(),t=e.getAttribute("class").match(BSCLS_PREFIX_REGEX);null!==t&&t.length>0&&t.map((function(e){return e.trim()})).forEach((function(t){return e.classList.remove(t)}))},n._handlePopperPlacementChange=function(e){var t=e.state;t&&(this.tip=t.elements.popper,this._cleanTipClass(),this._addAttachmentClass(this._getAttachment(t.placement)))},t.jQueryInterface=function(e){return this.each((function(){var n=Data.getData(this,DATA_KEY$6),i="object"==typeof e&&e;if((n||!/dispose|hide/.test(e))&&(n||(n=new t(this,i)),"string"==typeof e)){if(void 0===n[e])throw new TypeError('No method named "'+e+'"');n[e]()}}))},_createClass(t,null,[{key:"Default",get:function(){return Default$4}},{key:"NAME",get:function(){return NAME$6}},{key:"DATA_KEY",get:function(){return DATA_KEY$6}},{key:"Event",get:function(){return Event$1}},{key:"EVENT_KEY",get:function(){return EVENT_KEY$6}},{key:"DefaultType",get:function(){return DefaultType$4}}]),t}(BaseComponent);onDOMContentLoaded((function(){var e=getjQuery();if(e){var t=e.fn[NAME$6];e.fn[NAME$6]=Tooltip.jQueryInterface,e.fn[NAME$6].Constructor=Tooltip,e.fn[NAME$6].noConflict=function(){return e.fn[NAME$6]=t,Tooltip.jQueryInterface}}}));var NAME$7="popover",DATA_KEY$7="bs.popover",EVENT_KEY$7="."+DATA_KEY$7,CLASS_PREFIX$1="bs-popover",BSCLS_PREFIX_REGEX$1=new RegExp("(^|\\s)"+CLASS_PREFIX$1+"\\S+","g"),Default$5=_extends({},Tooltip.Default,{placement:"right",trigger:"click",content:"",template:''}),DefaultType$5=_extends({},Tooltip.DefaultType,{content:"(string|element|function)"}),Event$2={HIDE:"hide"+EVENT_KEY$7,HIDDEN:"hidden"+EVENT_KEY$7,SHOW:"show"+EVENT_KEY$7,SHOWN:"shown"+EVENT_KEY$7,INSERTED:"inserted"+EVENT_KEY$7,CLICK:"click"+EVENT_KEY$7,FOCUSIN:"focusin"+EVENT_KEY$7,FOCUSOUT:"focusout"+EVENT_KEY$7,MOUSEENTER:"mouseenter"+EVENT_KEY$7,MOUSELEAVE:"mouseleave"+EVENT_KEY$7},CLASS_NAME_FADE$2="fade",CLASS_NAME_SHOW$4="show",SELECTOR_TITLE=".popover-header",SELECTOR_CONTENT=".popover-body",Popover=function(e){function t(){return e.apply(this,arguments)||this}_inheritsLoose(t,e);var n=t.prototype;return n.isWithContent=function(){return this.getTitle()||this._getContent()},n.setContent=function(){var e=this.getTipElement();this.setElementContent(SelectorEngine.findOne(SELECTOR_TITLE,e),this.getTitle());var t=this._getContent();"function"==typeof t&&(t=t.call(this._element)),this.setElementContent(SelectorEngine.findOne(SELECTOR_CONTENT,e),t),e.classList.remove(CLASS_NAME_FADE$2,CLASS_NAME_SHOW$4)},n._addAttachmentClass=function(e){this.getTipElement().classList.add(CLASS_PREFIX$1+"-"+this.updateAttachment(e))},n._getContent=function(){return this._element.getAttribute("data-bs-content")||this.config.content},n._cleanTipClass=function(){var e=this.getTipElement(),t=e.getAttribute("class").match(BSCLS_PREFIX_REGEX$1);null!==t&&t.length>0&&t.map((function(e){return e.trim()})).forEach((function(t){return e.classList.remove(t)}))},t.jQueryInterface=function(e){return this.each((function(){var n=Data.getData(this,DATA_KEY$7),i="object"==typeof e?e:null;if((n||!/dispose|hide/.test(e))&&(n||(n=new t(this,i),Data.setData(this,DATA_KEY$7,n)),"string"==typeof e)){if(void 0===n[e])throw new TypeError('No method named "'+e+'"');n[e]()}}))},_createClass(t,null,[{key:"Default",get:function(){return Default$5}},{key:"NAME",get:function(){return NAME$7}},{key:"DATA_KEY",get:function(){return DATA_KEY$7}},{key:"Event",get:function(){return Event$2}},{key:"EVENT_KEY",get:function(){return EVENT_KEY$7}},{key:"DefaultType",get:function(){return DefaultType$5}}]),t}(Tooltip);onDOMContentLoaded((function(){var e=getjQuery();if(e){var t=e.fn[NAME$7];e.fn[NAME$7]=Popover.jQueryInterface,e.fn[NAME$7].Constructor=Popover,e.fn[NAME$7].noConflict=function(){return e.fn[NAME$7]=t,Popover.jQueryInterface}}}));var NAME$8="scrollspy",DATA_KEY$8="bs.scrollspy",EVENT_KEY$8="."+DATA_KEY$8,DATA_API_KEY$6=".data-api",Default$6={offset:10,method:"auto",target:""},DefaultType$6={offset:"number",method:"string",target:"(string|element)"},EVENT_ACTIVATE="activate"+EVENT_KEY$8,EVENT_SCROLL="scroll"+EVENT_KEY$8,EVENT_LOAD_DATA_API$1="load"+EVENT_KEY$8+DATA_API_KEY$6,CLASS_NAME_DROPDOWN_ITEM="dropdown-item",CLASS_NAME_ACTIVE$2="active",SELECTOR_DATA_SPY='[data-bs-spy="scroll"]',SELECTOR_NAV_LIST_GROUP=".nav, .list-group",SELECTOR_NAV_LINKS=".nav-link",SELECTOR_NAV_ITEMS=".nav-item",SELECTOR_LIST_ITEMS=".list-group-item",SELECTOR_DROPDOWN=".dropdown",SELECTOR_DROPDOWN_TOGGLE=".dropdown-toggle",METHOD_OFFSET="offset",METHOD_POSITION="position",ScrollSpy=function(e){function t(t,n){var i;return(i=e.call(this,t)||this)._scrollElement="BODY"===t.tagName?window:t,i._config=i._getConfig(n),i._selector=i._config.target+" "+SELECTOR_NAV_LINKS+", "+i._config.target+" "+SELECTOR_LIST_ITEMS+", "+i._config.target+" ."+CLASS_NAME_DROPDOWN_ITEM,i._offsets=[],i._targets=[],i._activeTarget=null,i._scrollHeight=0,EventHandler.on(i._scrollElement,EVENT_SCROLL,(function(e){return i._process(e)})),i.refresh(),i._process(),i}_inheritsLoose(t,e);var n=t.prototype;return n.refresh=function(){var e=this,t=this._scrollElement===this._scrollElement.window?METHOD_OFFSET:METHOD_POSITION,n="auto"===this._config.method?t:this._config.method,i=n===METHOD_POSITION?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),SelectorEngine.find(this._selector).map((function(e){var t=getSelectorFromElement(e),o=t?SelectorEngine.findOne(t):null;if(o){var r=o.getBoundingClientRect();if(r.width||r.height)return[Manipulator[n](o).top+i,t]}return null})).filter((function(e){return e})).sort((function(e,t){return e[0]-t[0]})).forEach((function(t){e._offsets.push(t[0]),e._targets.push(t[1])}))},n.dispose=function(){e.prototype.dispose.call(this),EventHandler.off(this._scrollElement,EVENT_KEY$8),this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},n._getConfig=function(e){if("string"!=typeof(e=_extends({},Default$6,"object"==typeof e&&e?e:{})).target&&isElement(e.target)){var t=e.target.id;t||(t=getUID(NAME$8),e.target.id=t),e.target="#"+t}return typeCheckConfig(NAME$8,e,DefaultType$6),e},n._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},n._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},n._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},n._process=function(){var e=this._getScrollTop()+this._config.offset,t=this._getScrollHeight(),n=this._config.offset+t-this._getOffsetHeight();if(this._scrollHeight!==t&&this.refresh(),e>=n){var i=this._targets[this._targets.length-1];this._activeTarget!==i&&this._activate(i)}else{if(this._activeTarget&&e0)return this._activeTarget=null,void this._clear();for(var o=this._offsets.length;o--;){this._activeTarget!==this._targets[o]&&e>=this._offsets[o]&&(void 0===this._offsets[o+1]||e li > .active",SELECTOR_DATA_TOGGLE$4='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',SELECTOR_DROPDOWN_TOGGLE$1=".dropdown-toggle",SELECTOR_DROPDOWN_ACTIVE_CHILD=":scope > .dropdown-menu .active",Tab=function(e){function t(){return e.apply(this,arguments)||this}_inheritsLoose(t,e);var n=t.prototype;return n.show=function(){var e=this;if(!(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&this._element.classList.contains(CLASS_NAME_ACTIVE$3)||this._element.classList.contains(CLASS_NAME_DISABLED$1))){var t,n=getElementFromSelector(this._element),i=this._element.closest(SELECTOR_NAV_LIST_GROUP$1);if(i){var o="UL"===i.nodeName||"OL"===i.nodeName?SELECTOR_ACTIVE_UL:SELECTOR_ACTIVE$1;t=(t=SelectorEngine.find(o,i))[t.length-1]}var r=null;if(t&&(r=EventHandler.trigger(t,EVENT_HIDE$3,{relatedTarget:this._element})),!(EventHandler.trigger(this._element,EVENT_SHOW$3,{relatedTarget:t}).defaultPrevented||null!==r&&r.defaultPrevented)){this._activate(this._element,i);var a=function(){EventHandler.trigger(t,EVENT_HIDDEN$3,{relatedTarget:e._element}),EventHandler.trigger(e._element,EVENT_SHOWN$3,{relatedTarget:t})};n?this._activate(n,n.parentNode,a):a()}}},n._activate=function(e,t,n){var i=this,o=(!t||"UL"!==t.nodeName&&"OL"!==t.nodeName?SelectorEngine.children(t,SELECTOR_ACTIVE$1):SelectorEngine.find(SELECTOR_ACTIVE_UL,t))[0],r=n&&o&&o.classList.contains(CLASS_NAME_FADE$3),a=function(){return i._transitionComplete(e,o,n)};if(o&&r){var s=getTransitionDurationFromElement(o);o.classList.remove(CLASS_NAME_SHOW$5),EventHandler.one(o,TRANSITION_END,a),emulateTransitionEnd(o,s)}else a()},n._transitionComplete=function(e,t,n){if(t){t.classList.remove(CLASS_NAME_ACTIVE$3);var i=SelectorEngine.findOne(SELECTOR_DROPDOWN_ACTIVE_CHILD,t.parentNode);i&&i.classList.remove(CLASS_NAME_ACTIVE$3),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!1)}(e.classList.add(CLASS_NAME_ACTIVE$3),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!0),reflow(e),e.classList.contains(CLASS_NAME_FADE$3)&&e.classList.add(CLASS_NAME_SHOW$5),e.parentNode&&e.parentNode.classList.contains(CLASS_NAME_DROPDOWN_MENU))&&(e.closest(SELECTOR_DROPDOWN$1)&&SelectorEngine.find(SELECTOR_DROPDOWN_TOGGLE$1).forEach((function(e){return e.classList.add(CLASS_NAME_ACTIVE$3)})),e.setAttribute("aria-expanded",!0));n&&n()},t.jQueryInterface=function(e){return this.each((function(){var n=Data.getData(this,DATA_KEY$9)||new t(this);if("string"==typeof e){if(void 0===n[e])throw new TypeError('No method named "'+e+'"');n[e]()}}))},_createClass(t,null,[{key:"DATA_KEY",get:function(){return DATA_KEY$9}}]),t}(BaseComponent);EventHandler.on(document,EVENT_CLICK_DATA_API$6,SELECTOR_DATA_TOGGLE$4,(function(e){e.preventDefault(),(Data.getData(this,DATA_KEY$9)||new Tab(this)).show()})),onDOMContentLoaded((function(){var e=getjQuery();if(e){var t=e.fn[NAME$9];e.fn[NAME$9]=Tab.jQueryInterface,e.fn[NAME$9].Constructor=Tab,e.fn[NAME$9].noConflict=function(){return e.fn[NAME$9]=t,Tab.jQueryInterface}}}));var NAME$a="toast",DATA_KEY$a="bs.toast",EVENT_KEY$a="."+DATA_KEY$a,EVENT_CLICK_DISMISS$1="click.dismiss"+EVENT_KEY$a,EVENT_HIDE$4="hide"+EVENT_KEY$a,EVENT_HIDDEN$4="hidden"+EVENT_KEY$a,EVENT_SHOW$4="show"+EVENT_KEY$a,EVENT_SHOWN$4="shown"+EVENT_KEY$a,CLASS_NAME_FADE$4="fade",CLASS_NAME_HIDE="hide",CLASS_NAME_SHOW$6="show",CLASS_NAME_SHOWING="showing",DefaultType$7={animation:"boolean",autohide:"boolean",delay:"number"},Default$7={animation:!0,autohide:!0,delay:5e3},SELECTOR_DATA_DISMISS$1='[data-bs-dismiss="toast"]',Toast=function(e){function t(t,n){var i;return(i=e.call(this,t)||this)._config=i._getConfig(n),i._timeout=null,i._setListeners(),i}_inheritsLoose(t,e);var n=t.prototype;return n.show=function(){var e=this;if(!EventHandler.trigger(this._element,EVENT_SHOW$4).defaultPrevented){this._clearTimeout(),this._config.animation&&this._element.classList.add(CLASS_NAME_FADE$4);var t=function(){e._element.classList.remove(CLASS_NAME_SHOWING),e._element.classList.add(CLASS_NAME_SHOW$6),EventHandler.trigger(e._element,EVENT_SHOWN$4),e._config.autohide&&(e._timeout=setTimeout((function(){e.hide()}),e._config.delay))};if(this._element.classList.remove(CLASS_NAME_HIDE),reflow(this._element),this._element.classList.add(CLASS_NAME_SHOWING),this._config.animation){var n=getTransitionDurationFromElement(this._element);EventHandler.one(this._element,TRANSITION_END,t),emulateTransitionEnd(this._element,n)}else t()}},n.hide=function(){var e=this;if(this._element.classList.contains(CLASS_NAME_SHOW$6)&&!EventHandler.trigger(this._element,EVENT_HIDE$4).defaultPrevented){var t=function(){e._element.classList.add(CLASS_NAME_HIDE),EventHandler.trigger(e._element,EVENT_HIDDEN$4)};if(this._element.classList.remove(CLASS_NAME_SHOW$6),this._config.animation){var n=getTransitionDurationFromElement(this._element);EventHandler.one(this._element,TRANSITION_END,t),emulateTransitionEnd(this._element,n)}else t()}},n.dispose=function(){this._clearTimeout(),this._element.classList.contains(CLASS_NAME_SHOW$6)&&this._element.classList.remove(CLASS_NAME_SHOW$6),EventHandler.off(this._element,EVENT_CLICK_DISMISS$1),e.prototype.dispose.call(this),this._config=null},n._getConfig=function(e){return e=_extends({},Default$7,Manipulator.getDataAttributes(this._element),"object"==typeof e&&e?e:{}),typeCheckConfig(NAME$a,e,this.constructor.DefaultType),e},n._setListeners=function(){var e=this;EventHandler.on(this._element,EVENT_CLICK_DISMISS$1,SELECTOR_DATA_DISMISS$1,(function(){return e.hide()}))},n._clearTimeout=function(){clearTimeout(this._timeout),this._timeout=null},t.jQueryInterface=function(e){return this.each((function(){var n=Data.getData(this,DATA_KEY$a);if(n||(n=new t(this,"object"==typeof e&&e)),"string"==typeof e){if(void 0===n[e])throw new TypeError('No method named "'+e+'"');n[e](this)}}))},_createClass(t,null,[{key:"DefaultType",get:function(){return DefaultType$7}},{key:"Default",get:function(){return Default$7}},{key:"DATA_KEY",get:function(){return DATA_KEY$a}}]),t}(BaseComponent);onDOMContentLoaded((function(){var e=getjQuery();if(e){var t=e.fn[NAME$a];e.fn[NAME$a]=Toast.jQueryInterface,e.fn[NAME$a].Constructor=Toast,e.fn[NAME$a].noConflict=function(){return e.fn[NAME$a]=t,Toast.jQueryInterface}}}));export{Alert,Button,Carousel,Collapse,Dropdown,Modal,Popover,ScrollSpy,Tab,Toast,Tooltip}; -//# sourceMappingURL=bootstrap.esm.min.js.map \ No newline at end of file diff --git a/dist/js/bootstrap.esm.min.js.map b/dist/js/bootstrap.esm.min.js.map deleted file mode 100644 index 4907f0042..000000000 --- a/dist/js/bootstrap.esm.min.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../../js/src/util/index.js","../../js/src/dom/data.js","../../js/src/dom/event-handler.js","../../js/src/base-component.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/dom/manipulator.js","../../js/src/dom/selector-engine.js","../../js/src/carousel.js","../../js/src/collapse.js","../../js/src/dropdown.js","../../js/src/modal.js","../../js/src/util/sanitizer.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/toast.js"],"names":["MAX_UID","MILLISECONDS_MULTIPLIER","TRANSITION_END","toType","obj","toString","call","match","toLowerCase","getUID","prefix","Math","floor","random","document","getElementById","getSelector","element","selector","getAttribute","hrefAttr","trim","getSelectorFromElement","querySelector","getElementFromSelector","getTransitionDurationFromElement","_window$getComputedSt","window","getComputedStyle","transitionDuration","transitionDelay","floatTransitionDuration","Number","parseFloat","floatTransitionDelay","split","triggerTransitionEnd","dispatchEvent","Event","isElement","nodeType","emulateTransitionEnd","duration","called","emulatedDuration","addEventListener","listener","removeEventListener","setTimeout","typeCheckConfig","componentName","config","configTypes","Object","keys","forEach","property","expectedTypes","value","valueType","RegExp","test","Error","toUpperCase","isVisible","style","parentNode","elementStyle","parentNodeStyle","display","visibility","findShadowRoot","documentElement","attachShadow","getRootNode","root","ShadowRoot","noop","reflow","offsetHeight","getjQuery","jQuery","body","hasAttribute","onDOMContentLoaded","callback","readyState","isRTL","dir","mapData","storeData","id","set","key","data","bsKey","get","keyProperties","delete","Data","setData","instance","getData","removeData","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","nativeEvents","Set","getUidEvent","uid","getEvent","bootstrapHandler","fn","handler","event","delegateTarget","oneOff","EventHandler","off","type","apply","bootstrapDelegationHandler","domElements","querySelectorAll","target","this","i","length","findHandler","events","delegationSelector","uidEventList","len","originalHandler","normalizeParams","originalTypeEvent","delegationFn","delegation","typeEvent","replace","custom","has","addHandler","_normalizeParams","handlers","previousFn","removeHandler","Boolean","removeNamespacedHandlers","namespace","storeElementEvent","handlerKey","includes","on","one","_normalizeParams2","inNamespace","isNamespace","startsWith","elementEvent","slice","keyHandlers","trigger","args","jQueryEvent","$","isNative","bubbles","nativeDispatch","defaultPrevented","evt","isPropagationStopped","isImmediatePropagationStopped","isDefaultPrevented","createEvent","initEvent","CustomEvent","cancelable","defineProperty","preventDefault","VERSION","BaseComponent","_element","constructor","DATA_KEY","dispose","getInstance","NAME","EVENT_KEY","DATA_API_KEY","SELECTOR_DISMISS","EVENT_CLOSE","EVENT_CLOSED","EVENT_CLICK_DATA_API","CLASSNAME_ALERT","CLASSNAME_FADE","CLASSNAME_SHOW","Alert","close","rootElement","_getRootElement","customEvent","_triggerCloseEvent","_removeElement","closest","_this","classList","remove","contains","_destroyElement","removeChild","jQueryInterface","each","handleDismiss","alertInstance","JQUERY_NO_CONFLICT","Constructor","noConflict","CLASS_NAME_ACTIVE","SELECTOR_DATA_TOGGLE","Button","toggle","setAttribute","normalizeData","val","normalizeDataKey","chr","button","Manipulator","setDataAttribute","removeDataAttribute","removeAttribute","getDataAttributes","attributes","dataset","filter","pureKey","charAt","getDataAttribute","offset","rect","getBoundingClientRect","top","scrollTop","left","scrollLeft","position","offsetTop","offsetLeft","NODE_TEXT","SelectorEngine","matches","find","_ref","concat","Element","prototype","findOne","children","_ref2","child","parents","ancestor","Node","ELEMENT_NODE","push","prev","previous","previousElementSibling","next","nextElementSibling","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","TOUCHEVENT_COMPAT_WAIT","SWIPE_THRESHOLD","Default","interval","keyboard","slide","pause","wrap","touch","DefaultType","DIRECTION_NEXT","DIRECTION_PREV","DIRECTION_LEFT","DIRECTION_RIGHT","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERDOWN","EVENT_POINTERUP","EVENT_DRAG_START","EVENT_LOAD_DATA_API","CLASS_NAME_CAROUSEL","CLASS_NAME_SLIDE","CLASS_NAME_END","CLASS_NAME_START","CLASS_NAME_NEXT","CLASS_NAME_PREV","CLASS_NAME_POINTER_EVENT","SELECTOR_ACTIVE","SELECTOR_ACTIVE_ITEM","SELECTOR_ITEM","SELECTOR_ITEM_IMG","SELECTOR_NEXT_PREV","SELECTOR_INDICATORS","SELECTOR_DATA_SLIDE","SELECTOR_DATA_RIDE","PointerType","TOUCH","PEN","Carousel","_BaseComponent","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","touchStartX","touchDeltaX","_config","_getConfig","_indicatorsElement","_touchSupported","navigator","maxTouchPoints","_pointerEvent","PointerEvent","_addEventListeners","_slide","nextWhenVisible","hidden","cycle","clearInterval","_updateInterval","setInterval","visibilityState","bind","to","index","_this2","activeIndex","_getItemIndex","direction","_extends","_handleSwipe","absDeltax","abs","_this3","_keydown","_addTouchEventListeners","_this4","start","pointerType","clientX","touches","end","clearTimeout","itemImg","e","add","move","tagName","indexOf","_getItemByDirection","activeElement","isNextDirection","isPrevDirection","lastItemIndex","itemIndex","_triggerSlideEvent","relatedTarget","eventDirectionName","targetIndex","fromIndex","from","_setActiveIndicatorElement","indicators","nextIndicator","elementInterval","parseInt","defaultInterval","directionalClassName","orderClassName","_this5","activeElementIndex","nextElement","nextElementIndex","isCycling","carouselInterface","action","TypeError","ride","dataApiClickHandler","slideIndex","carousels","parent","EVENT_SHOW","EVENT_SHOWN","EVENT_HIDE","EVENT_HIDDEN","CLASS_NAME_SHOW","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_COLLAPSED","WIDTH","HEIGHT","SELECTOR_ACTIVES","Collapse","_isTransitioning","_triggerArray","toggleList","elem","filterElement","foundElem","_selector","_parent","_getParent","_addAriaAndCollapsedClass","hide","show","actives","activesData","container","tempActiveData","elemActive","collapseInterface","dimension","_getDimension","setTransitioning","scrollSize","triggerArrayLength","isTransitioning","jquery","selected","triggerArray","isOpen","triggerData","ESCAPE_KEY","SPACE_KEY","TAB_KEY","ARROW_UP_KEY","ARROW_DOWN_KEY","RIGHT_MOUSE_BUTTON","REGEXP_KEYDOWN","EVENT_CLICK","EVENT_KEYDOWN_DATA_API","EVENT_KEYUP_DATA_API","CLASS_NAME_DISABLED","CLASS_NAME_DROPUP","CLASS_NAME_DROPEND","CLASS_NAME_DROPSTART","CLASS_NAME_NAVBAR","SELECTOR_FORM_CHILD","SELECTOR_MENU","SELECTOR_NAVBAR_NAV","SELECTOR_VISIBLE_ITEMS","PLACEMENT_TOP","PLACEMENT_TOPEND","PLACEMENT_BOTTOM","PLACEMENT_BOTTOMEND","PLACEMENT_RIGHT","PLACEMENT_LEFT","flip","boundary","reference","popperConfig","Dropdown","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","disabled","isActive","clearMenus","getParentFromElement","Popper","referenceElement","_getPopperConfig","focus","destroy","update","stopPropagation","_getPlacement","parentDropdown","isEnd","getPropertyValue","placement","modifiers","name","options","altBoundary","rootBoundary","enabled","dropdownInterface","toggles","context","clickEvent","dropdownMenu","dataApiKeydownHandler","items","backdrop","EVENT_HIDE_PREVENTED","EVENT_FOCUSIN","EVENT_RESIZE","EVENT_CLICK_DISMISS","EVENT_KEYDOWN_DISMISS","EVENT_MOUSEUP_DISMISS","EVENT_MOUSEDOWN_DISMISS","CLASS_NAME_SCROLLBAR_MEASURER","CLASS_NAME_BACKDROP","CLASS_NAME_OPEN","CLASS_NAME_FADE","CLASS_NAME_STATIC","SELECTOR_DIALOG","SELECTOR_MODAL_BODY","SELECTOR_DATA_DISMISS","SELECTOR_FIXED_CONTENT","SELECTOR_STICKY_CONTENT","Modal","_dialog","_backdrop","_isShown","_isBodyOverflowing","_ignoreBackdropClick","_scrollbarWidth","showEvent","_checkScrollbar","_setScrollbar","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","transition","_hideModal","htmlElement","handleUpdate","modalBody","appendChild","_enforceFocus","transitionComplete","_this6","_triggerBackdropTransition","_this7","_this8","_resetAdjustments","_resetScrollbar","_removeBackdrop","_this9","animate","createElement","className","currentTarget","backdropTransitionDuration","callbackRemove","_this10","isModalOverflowing","scrollHeight","clientHeight","overflowY","modalTransitionDuration","paddingLeft","paddingRight","round","right","innerWidth","_getScrollbarWidth","_this11","actualPadding","calculatedPadding","actualMargin","marginRight","calculatedMargin","padding","margin","scrollDiv","scrollbarWidth","width","clientWidth","_this12","uriAttrs","ARIA_ATTRIBUTE_PATTERN","SAFE_URL_PATTERN","DATA_URL_PATTERN","allowedAttribute","attr","allowedAttributeList","attrName","nodeName","nodeValue","regExp","attrRegex","DefaultAllowlist","*","a","area","b","br","col","code","div","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","p","pre","s","small","span","sub","sup","strong","u","ul","sanitizeHtml","unsafeHtml","allowList","sanitizeFn","createdDocument","DOMParser","parseFromString","allowlistKeys","elements","_loop","el","elName","attributeList","allowedAttributes","innerHTML","CLASS_PREFIX","BSCLS_PREFIX_REGEX","DISALLOWED_ATTRIBUTES","animation","template","title","delay","html","fallbackPlacements","customClass","sanitize","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","HIDE","HIDDEN","SHOW","SHOWN","INSERTED","CLICK","FOCUSIN","FOCUSOUT","MOUSEENTER","MOUSELEAVE","CLASS_NAME_MODAL","HOVER_STATE_SHOW","HOVER_STATE_OUT","SELECTOR_TOOLTIP_INNER","TRIGGER_HOVER","TRIGGER_FOCUS","TRIGGER_CLICK","TRIGGER_MANUAL","Tooltip","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","enable","disable","toggleEnabled","dataKey","_getDelegateConfig","click","_isWithActiveTrigger","_enter","_leave","getTipElement","_hideModalHandler","isWithContent","shadowRoot","isInTheDom","ownerDocument","tipId","setContent","attachment","_getAttachment","_addAttachmentClass","_getContainer","_tip$classList","complete","prevHoverState","_cleanTipClass","getTitle","setElementContent","content","textContent","updateAttachment","flipModifier","phase","_handlePopperPlacementChange","onFirstUpdate","eventIn","eventOut","_fixTitle","originalTitleType","dataAttributes","dataAttr","tabClass","map","token","tClass","popperData","state","popper","SELECTOR_TITLE","SELECTOR_CONTENT","Popover","_getContent","method","EVENT_ACTIVATE","EVENT_SCROLL","CLASS_NAME_DROPDOWN_ITEM","SELECTOR_DATA_SPY","SELECTOR_NAV_LIST_GROUP","SELECTOR_NAV_LINKS","SELECTOR_NAV_ITEMS","SELECTOR_LIST_ITEMS","SELECTOR_DROPDOWN","SELECTOR_DROPDOWN_TOGGLE","METHOD_OFFSET","METHOD_POSITION","ScrollSpy","_scrollElement","_offsets","_targets","_activeTarget","_scrollHeight","_process","refresh","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","targetSelector","targetBCR","height","item","sort","pageYOffset","max","_getOffsetHeight","innerHeight","maxScroll","_activate","_clear","queries","link","join","listGroup","navItem","node","spy","CLASS_NAME_DROPDOWN_MENU","SELECTOR_ACTIVE_UL","SELECTOR_DROPDOWN_ACTIVE_CHILD","Tab","listElement","itemSelector","hideEvent","active","_transitionComplete","dropdownChild","dropdown","CLASS_NAME_HIDE","CLASS_NAME_SHOWING","autohide","Toast","_clearTimeout"],"mappings":"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","sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1000000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n// Shoutout AngusCroll (https://goo.gl/pxwQGp)\nconst toType = obj => {\n if (obj === null || obj === undefined) {\n return `${obj}`\n }\n\n return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\n/**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\nconst getUID = prefix => {\n do {\n prefix += Math.floor(Math.random() * MAX_UID)\n } while (document.getElementById(prefix))\n\n return prefix\n}\n\nconst getSelector = element => {\n let selector = element.getAttribute('data-bs-target')\n\n if (!selector || selector === '#') {\n const hrefAttr = element.getAttribute('href')\n\n selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null\n }\n\n return selector\n}\n\nconst getSelectorFromElement = element => {\n const selector = getSelector(element)\n\n if (selector) {\n return document.querySelector(selector) ? selector : null\n }\n\n return null\n}\n\nconst getElementFromSelector = element => {\n const selector = getSelector(element)\n\n return selector ? document.querySelector(selector) : null\n}\n\nconst getTransitionDurationFromElement = element => {\n if (!element) {\n return 0\n }\n\n // Get transition-duration of the element\n let { transitionDuration, transitionDelay } = window.getComputedStyle(element)\n\n const floatTransitionDuration = Number.parseFloat(transitionDuration)\n const floatTransitionDelay = Number.parseFloat(transitionDelay)\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0]\n transitionDelay = transitionDelay.split(',')[0]\n\n return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = element => {\n element.dispatchEvent(new Event(TRANSITION_END))\n}\n\nconst isElement = obj => (obj[0] || obj).nodeType\n\nconst emulateTransitionEnd = (element, duration) => {\n let called = false\n const durationPadding = 5\n const emulatedDuration = duration + durationPadding\n\n function listener() {\n called = true\n element.removeEventListener(TRANSITION_END, listener)\n }\n\n element.addEventListener(TRANSITION_END, listener)\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(element)\n }\n }, emulatedDuration)\n}\n\nconst typeCheckConfig = (componentName, config, configTypes) => {\n Object.keys(configTypes).forEach(property => {\n const expectedTypes = configTypes[property]\n const value = config[property]\n const valueType = value && isElement(value) ?\n 'element' :\n toType(value)\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new Error(\n `${componentName.toUpperCase()}: ` +\n `Option \"${property}\" provided type \"${valueType}\" ` +\n `but expected type \"${expectedTypes}\".`)\n }\n })\n}\n\nconst isVisible = element => {\n if (!element) {\n return false\n }\n\n if (element.style && element.parentNode && element.parentNode.style) {\n const elementStyle = getComputedStyle(element)\n const parentNodeStyle = getComputedStyle(element.parentNode)\n\n return elementStyle.display !== 'none' &&\n parentNodeStyle.display !== 'none' &&\n elementStyle.visibility !== 'hidden'\n }\n\n return false\n}\n\nconst findShadowRoot = element => {\n if (!document.documentElement.attachShadow) {\n return null\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode()\n return root instanceof ShadowRoot ? root : null\n }\n\n if (element instanceof ShadowRoot) {\n return element\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null\n }\n\n return findShadowRoot(element.parentNode)\n}\n\nconst noop = () => function () {}\n\nconst reflow = element => element.offsetHeight\n\nconst getjQuery = () => {\n const { jQuery } = window\n\n if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n return jQuery\n }\n\n return null\n}\n\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', callback)\n } else {\n callback()\n }\n}\n\nconst isRTL = document.documentElement.dir === 'rtl'\n\nexport {\n TRANSITION_END,\n getUID,\n getSelectorFromElement,\n getElementFromSelector,\n getTransitionDurationFromElement,\n triggerTransitionEnd,\n isElement,\n emulateTransitionEnd,\n typeCheckConfig,\n isVisible,\n findShadowRoot,\n noop,\n reflow,\n getjQuery,\n onDOMContentLoaded,\n isRTL\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst mapData = (() => {\n const storeData = {}\n let id = 1\n return {\n set(element, key, data) {\n if (typeof element.bsKey === 'undefined') {\n element.bsKey = {\n key,\n id\n }\n id++\n }\n\n storeData[element.bsKey.id] = data\n },\n get(element, key) {\n if (!element || typeof element.bsKey === 'undefined') {\n return null\n }\n\n const keyProperties = element.bsKey\n if (keyProperties.key === key) {\n return storeData[keyProperties.id]\n }\n\n return null\n },\n delete(element, key) {\n if (typeof element.bsKey === 'undefined') {\n return\n }\n\n const keyProperties = element.bsKey\n if (keyProperties.key === key) {\n delete storeData[keyProperties.id]\n delete element.bsKey\n }\n }\n }\n})()\n\nconst Data = {\n setData(instance, key, data) {\n mapData.set(instance, key, data)\n },\n getData(instance, key) {\n return mapData.get(instance, key)\n },\n removeData(instance, key) {\n mapData.delete(instance, key)\n }\n}\n\nexport default Data\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery } from '../util/index'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/\nconst stripNameRegex = /\\..*/\nconst stripUidRegex = /::\\d+$/\nconst eventRegistry = {} // Events storage\nlet uidEvent = 1\nconst customEvents = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout'\n}\nconst nativeEvents = new Set([\n 'click',\n 'dblclick',\n 'mouseup',\n 'mousedown',\n 'contextmenu',\n 'mousewheel',\n 'DOMMouseScroll',\n 'mouseover',\n 'mouseout',\n 'mousemove',\n 'selectstart',\n 'selectend',\n 'keydown',\n 'keypress',\n 'keyup',\n 'orientationchange',\n 'touchstart',\n 'touchmove',\n 'touchend',\n 'touchcancel',\n 'pointerdown',\n 'pointermove',\n 'pointerup',\n 'pointerleave',\n 'pointercancel',\n 'gesturestart',\n 'gesturechange',\n 'gestureend',\n 'focus',\n 'blur',\n 'change',\n 'reset',\n 'select',\n 'submit',\n 'focusin',\n 'focusout',\n 'load',\n 'unload',\n 'beforeunload',\n 'resize',\n 'move',\n 'DOMContentLoaded',\n 'readystatechange',\n 'error',\n 'abort',\n 'scroll'\n])\n\n/**\n * ------------------------------------------------------------------------\n * Private methods\n * ------------------------------------------------------------------------\n */\n\nfunction getUidEvent(element, uid) {\n return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\n}\n\nfunction getEvent(element) {\n const uid = getUidEvent(element)\n\n element.uidEvent = uid\n eventRegistry[uid] = eventRegistry[uid] || {}\n\n return eventRegistry[uid]\n}\n\nfunction bootstrapHandler(element, fn) {\n return function handler(event) {\n event.delegateTarget = element\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, fn)\n }\n\n return fn.apply(element, [event])\n }\n}\n\nfunction bootstrapDelegationHandler(element, selector, fn) {\n return function handler(event) {\n const domElements = element.querySelectorAll(selector)\n\n for (let { target } = event; target && target !== this; target = target.parentNode) {\n for (let i = domElements.length; i--;) {\n if (domElements[i] === target) {\n event.delegateTarget = target\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, fn)\n }\n\n return fn.apply(target, [event])\n }\n }\n }\n\n // To please ESLint\n return null\n }\n}\n\nfunction findHandler(events, handler, delegationSelector = null) {\n const uidEventList = Object.keys(events)\n\n for (let i = 0, len = uidEventList.length; i < len; i++) {\n const event = events[uidEventList[i]]\n\n if (event.originalHandler === handler && event.delegationSelector === delegationSelector) {\n return event\n }\n }\n\n return null\n}\n\nfunction normalizeParams(originalTypeEvent, handler, delegationFn) {\n const delegation = typeof handler === 'string'\n const originalHandler = delegation ? delegationFn : handler\n\n // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n let typeEvent = originalTypeEvent.replace(stripNameRegex, '')\n const custom = customEvents[typeEvent]\n\n if (custom) {\n typeEvent = custom\n }\n\n const isNative = nativeEvents.has(typeEvent)\n\n if (!isNative) {\n typeEvent = originalTypeEvent\n }\n\n return [delegation, originalHandler, typeEvent]\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFn, oneOff) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n if (!handler) {\n handler = delegationFn\n delegationFn = null\n }\n\n const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn)\n const events = getEvent(element)\n const handlers = events[typeEvent] || (events[typeEvent] = {})\n const previousFn = findHandler(handlers, originalHandler, delegation ? handler : null)\n\n if (previousFn) {\n previousFn.oneOff = previousFn.oneOff && oneOff\n\n return\n }\n\n const uid = getUidEvent(originalHandler, originalTypeEvent.replace(namespaceRegex, ''))\n const fn = delegation ?\n bootstrapDelegationHandler(element, handler, delegationFn) :\n bootstrapHandler(element, handler)\n\n fn.delegationSelector = delegation ? handler : null\n fn.originalHandler = originalHandler\n fn.oneOff = oneOff\n fn.uidEvent = uid\n handlers[uid] = fn\n\n element.addEventListener(typeEvent, fn, delegation)\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n const fn = findHandler(events[typeEvent], handler, delegationSelector)\n\n if (!fn) {\n return\n }\n\n element.removeEventListener(typeEvent, fn, Boolean(delegationSelector))\n delete events[typeEvent][fn.uidEvent]\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n const storeElementEvent = events[typeEvent] || {}\n\n Object.keys(storeElementEvent).forEach(handlerKey => {\n if (handlerKey.includes(namespace)) {\n const event = storeElementEvent[handlerKey]\n\n removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector)\n }\n })\n}\n\nconst EventHandler = {\n on(element, event, handler, delegationFn) {\n addHandler(element, event, handler, delegationFn, false)\n },\n\n one(element, event, handler, delegationFn) {\n addHandler(element, event, handler, delegationFn, true)\n },\n\n off(element, originalTypeEvent, handler, delegationFn) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn)\n const inNamespace = typeEvent !== originalTypeEvent\n const events = getEvent(element)\n const isNamespace = originalTypeEvent.startsWith('.')\n\n if (typeof originalHandler !== 'undefined') {\n // Simplest case: handler is passed, remove that listener ONLY.\n if (!events || !events[typeEvent]) {\n return\n }\n\n removeHandler(element, events, typeEvent, originalHandler, delegation ? handler : null)\n return\n }\n\n if (isNamespace) {\n Object.keys(events).forEach(elementEvent => {\n removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\n })\n }\n\n const storeElementEvent = events[typeEvent] || {}\n Object.keys(storeElementEvent).forEach(keyHandlers => {\n const handlerKey = keyHandlers.replace(stripUidRegex, '')\n\n if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n const event = storeElementEvent[keyHandlers]\n\n removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector)\n }\n })\n },\n\n trigger(element, event, args) {\n if (typeof event !== 'string' || !element) {\n return null\n }\n\n const $ = getjQuery()\n const typeEvent = event.replace(stripNameRegex, '')\n const inNamespace = event !== typeEvent\n const isNative = nativeEvents.has(typeEvent)\n\n let jQueryEvent\n let bubbles = true\n let nativeDispatch = true\n let defaultPrevented = false\n let evt = null\n\n if (inNamespace && $) {\n jQueryEvent = $.Event(event, args)\n\n $(element).trigger(jQueryEvent)\n bubbles = !jQueryEvent.isPropagationStopped()\n nativeDispatch = !jQueryEvent.isImmediatePropagationStopped()\n defaultPrevented = jQueryEvent.isDefaultPrevented()\n }\n\n if (isNative) {\n evt = document.createEvent('HTMLEvents')\n evt.initEvent(typeEvent, bubbles, true)\n } else {\n evt = new CustomEvent(event, {\n bubbles,\n cancelable: true\n })\n }\n\n // merge custom information in our event\n if (typeof args !== 'undefined') {\n Object.keys(args).forEach(key => {\n Object.defineProperty(evt, key, {\n get() {\n return args[key]\n }\n })\n })\n }\n\n if (defaultPrevented) {\n evt.preventDefault()\n }\n\n if (nativeDispatch) {\n element.dispatchEvent(evt)\n }\n\n if (evt.defaultPrevented && typeof jQueryEvent !== 'undefined') {\n jQueryEvent.preventDefault()\n }\n\n return evt\n }\n}\n\nexport default EventHandler\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst VERSION = '5.0.0-beta1'\n\nclass BaseComponent {\n constructor(element) {\n if (!element) {\n return\n }\n\n this._element = element\n Data.setData(element, this.constructor.DATA_KEY, this)\n }\n\n dispose() {\n Data.removeData(this._element, this.constructor.DATA_KEY)\n this._element = null\n }\n\n /** Static */\n\n static getInstance(element) {\n return Data.getData(element, this.DATA_KEY)\n }\n\n static get VERSION() {\n return VERSION\n }\n}\n\nexport default BaseComponent\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n getjQuery,\n onDOMContentLoaded,\n TRANSITION_END,\n emulateTransitionEnd,\n getElementFromSelector,\n getTransitionDurationFromElement\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'alert'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst SELECTOR_DISMISS = '[data-bs-dismiss=\"alert\"]'\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`\nconst EVENT_CLOSED = `closed${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASSNAME_ALERT = 'alert'\nconst CLASSNAME_FADE = 'fade'\nconst CLASSNAME_SHOW = 'show'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Alert extends BaseComponent {\n // Getters\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n close(element) {\n const rootElement = element ? this._getRootElement(element) : this._element\n const customEvent = this._triggerCloseEvent(rootElement)\n\n if (customEvent === null || customEvent.defaultPrevented) {\n return\n }\n\n this._removeElement(rootElement)\n }\n\n // Private\n\n _getRootElement(element) {\n return getElementFromSelector(element) || element.closest(`.${CLASSNAME_ALERT}`)\n }\n\n _triggerCloseEvent(element) {\n return EventHandler.trigger(element, EVENT_CLOSE)\n }\n\n _removeElement(element) {\n element.classList.remove(CLASSNAME_SHOW)\n\n if (!element.classList.contains(CLASSNAME_FADE)) {\n this._destroyElement(element)\n return\n }\n\n const transitionDuration = getTransitionDurationFromElement(element)\n\n EventHandler.one(element, TRANSITION_END, () => this._destroyElement(element))\n emulateTransitionEnd(element, transitionDuration)\n }\n\n _destroyElement(element) {\n if (element.parentNode) {\n element.parentNode.removeChild(element)\n }\n\n EventHandler.trigger(element, EVENT_CLOSED)\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY)\n\n if (!data) {\n data = new Alert(this)\n }\n\n if (config === 'close') {\n data[config](this)\n }\n })\n }\n\n static handleDismiss(alertInstance) {\n return function (event) {\n if (event) {\n event.preventDefault()\n }\n\n alertInstance.close(this)\n }\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DISMISS, Alert.handleDismiss(new Alert()))\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Alert to jQuery only if jQuery is present\n */\n\nonDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Alert.jQueryInterface\n $.fn[NAME].Constructor = Alert\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Alert.jQueryInterface\n }\n }\n})\n\nexport default Alert\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery, onDOMContentLoaded } from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'button'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"button\"]'\n\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Button extends BaseComponent {\n // Getters\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n toggle() {\n // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE))\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY)\n\n if (!data) {\n data = new Button(this)\n }\n\n if (config === 'toggle') {\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, event => {\n event.preventDefault()\n\n const button = event.target.closest(SELECTOR_DATA_TOGGLE)\n\n let data = Data.getData(button, DATA_KEY)\n if (!data) {\n data = new Button(button)\n }\n\n data.toggle()\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Button to jQuery only if jQuery is present\n */\n\nonDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Button.jQueryInterface\n $.fn[NAME].Constructor = Button\n\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Button.jQueryInterface\n }\n }\n})\n\nexport default Button\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(val) {\n if (val === 'true') {\n return true\n }\n\n if (val === 'false') {\n return false\n }\n\n if (val === Number(val).toString()) {\n return Number(val)\n }\n\n if (val === '' || val === 'null') {\n return null\n }\n\n return val\n}\n\nfunction normalizeDataKey(key) {\n return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`)\n}\n\nconst Manipulator = {\n setDataAttribute(element, key, value) {\n element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value)\n },\n\n removeDataAttribute(element, key) {\n element.removeAttribute(`data-bs-${normalizeDataKey(key)}`)\n },\n\n getDataAttributes(element) {\n if (!element) {\n return {}\n }\n\n const attributes = {}\n\n Object.keys(element.dataset)\n .filter(key => key.startsWith('bs'))\n .forEach(key => {\n let pureKey = key.replace(/^bs/, '')\n pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length)\n attributes[pureKey] = normalizeData(element.dataset[key])\n })\n\n return attributes\n },\n\n getDataAttribute(element, key) {\n return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`))\n },\n\n offset(element) {\n const rect = element.getBoundingClientRect()\n\n return {\n top: rect.top + document.body.scrollTop,\n left: rect.left + document.body.scrollLeft\n }\n },\n\n position(element) {\n return {\n top: element.offsetTop,\n left: element.offsetLeft\n }\n }\n}\n\nexport default Manipulator\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NODE_TEXT = 3\n\nconst SelectorEngine = {\n matches(element, selector) {\n return element.matches(selector)\n },\n\n find(selector, element = document.documentElement) {\n return [].concat(...Element.prototype.querySelectorAll.call(element, selector))\n },\n\n findOne(selector, element = document.documentElement) {\n return Element.prototype.querySelector.call(element, selector)\n },\n\n children(element, selector) {\n const children = [].concat(...element.children)\n\n return children.filter(child => child.matches(selector))\n },\n\n parents(element, selector) {\n const parents = []\n\n let ancestor = element.parentNode\n\n while (ancestor && ancestor.nodeType === Node.ELEMENT_NODE && ancestor.nodeType !== NODE_TEXT) {\n if (this.matches(ancestor, selector)) {\n parents.push(ancestor)\n }\n\n ancestor = ancestor.parentNode\n }\n\n return parents\n },\n\n prev(element, selector) {\n let previous = element.previousElementSibling\n\n while (previous) {\n if (previous.matches(selector)) {\n return [previous]\n }\n\n previous = previous.previousElementSibling\n }\n\n return []\n },\n\n next(element, selector) {\n let next = element.nextElementSibling\n\n while (next) {\n if (this.matches(next, selector)) {\n return [next]\n }\n\n next = next.nextElementSibling\n }\n\n return []\n }\n}\n\nexport default SelectorEngine\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n getjQuery,\n onDOMContentLoaded,\n TRANSITION_END,\n emulateTransitionEnd,\n getElementFromSelector,\n getTransitionDurationFromElement,\n isVisible,\n reflow,\n triggerTransitionEnd,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'carousel'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n interval: 5000,\n keyboard: true,\n slide: false,\n pause: 'hover',\n wrap: true,\n touch: true\n}\n\nconst DefaultType = {\n interval: '(number|boolean)',\n keyboard: 'boolean',\n slide: '(boolean|string)',\n pause: '(string|boolean)',\n wrap: 'boolean',\n touch: 'boolean'\n}\n\nconst DIRECTION_NEXT = 'next'\nconst DIRECTION_PREV = 'prev'\nconst DIRECTION_LEFT = 'left'\nconst DIRECTION_RIGHT = 'right'\n\nconst EVENT_SLIDE = `slide${EVENT_KEY}`\nconst EVENT_SLID = `slid${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY}`\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_CAROUSEL = 'carousel'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_SLIDE = 'slide'\nconst CLASS_NAME_END = 'carousel-item-end'\nconst CLASS_NAME_START = 'carousel-item-start'\nconst CLASS_NAME_NEXT = 'carousel-item-next'\nconst CLASS_NAME_PREV = 'carousel-item-prev'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\n\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ACTIVE_ITEM = '.active.carousel-item'\nconst SELECTOR_ITEM = '.carousel-item'\nconst SELECTOR_ITEM_IMG = '.carousel-item img'\nconst SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]'\n\nconst PointerType = {\n TOUCH: 'touch',\n PEN: 'pen'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\nclass Carousel extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._items = null\n this._interval = null\n this._activeElement = null\n this._isPaused = false\n this._isSliding = false\n this.touchTimeout = null\n this.touchStartX = 0\n this.touchDeltaX = 0\n\n this._config = this._getConfig(config)\n this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n this._pointerEvent = Boolean(window.PointerEvent)\n\n this._addEventListeners()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n next() {\n if (!this._isSliding) {\n this._slide(DIRECTION_NEXT)\n }\n }\n\n nextWhenVisible() {\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden && isVisible(this._element)) {\n this.next()\n }\n }\n\n prev() {\n if (!this._isSliding) {\n this._slide(DIRECTION_PREV)\n }\n }\n\n pause(event) {\n if (!event) {\n this._isPaused = true\n }\n\n if (SelectorEngine.findOne(SELECTOR_NEXT_PREV, this._element)) {\n triggerTransitionEnd(this._element)\n this.cycle(true)\n }\n\n clearInterval(this._interval)\n this._interval = null\n }\n\n cycle(event) {\n if (!event) {\n this._isPaused = false\n }\n\n if (this._interval) {\n clearInterval(this._interval)\n this._interval = null\n }\n\n if (this._config && this._config.interval && !this._isPaused) {\n this._updateInterval()\n\n this._interval = setInterval(\n (document.visibilityState ? this.nextWhenVisible : this.next).bind(this),\n this._config.interval\n )\n }\n }\n\n to(index) {\n this._activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n const activeIndex = this._getItemIndex(this._activeElement)\n\n if (index > this._items.length - 1 || index < 0) {\n return\n }\n\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.to(index))\n return\n }\n\n if (activeIndex === index) {\n this.pause()\n this.cycle()\n return\n }\n\n const direction = index > activeIndex ?\n DIRECTION_NEXT :\n DIRECTION_PREV\n\n this._slide(direction, this._items[index])\n }\n\n dispose() {\n super.dispose()\n EventHandler.off(this._element, EVENT_KEY)\n\n this._items = null\n this._config = null\n this._interval = null\n this._isPaused = null\n this._isSliding = null\n this._activeElement = null\n this._indicatorsElement = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _handleSwipe() {\n const absDeltax = Math.abs(this.touchDeltaX)\n\n if (absDeltax <= SWIPE_THRESHOLD) {\n return\n }\n\n const direction = absDeltax / this.touchDeltaX\n\n this.touchDeltaX = 0\n\n // swipe left\n if (direction > 0) {\n this.prev()\n }\n\n // swipe right\n if (direction < 0) {\n this.next()\n }\n }\n\n _addEventListeners() {\n if (this._config.keyboard) {\n EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n }\n\n if (this._config.pause === 'hover') {\n EventHandler.on(this._element, EVENT_MOUSEENTER, event => this.pause(event))\n EventHandler.on(this._element, EVENT_MOUSELEAVE, event => this.cycle(event))\n }\n\n if (this._config.touch && this._touchSupported) {\n this._addTouchEventListeners()\n }\n }\n\n _addTouchEventListeners() {\n const start = event => {\n if (this._pointerEvent && PointerType[event.pointerType.toUpperCase()]) {\n this.touchStartX = event.clientX\n } else if (!this._pointerEvent) {\n this.touchStartX = event.touches[0].clientX\n }\n }\n\n const move = event => {\n // ensure swiping with one touch and not pinching\n if (event.touches && event.touches.length > 1) {\n this.touchDeltaX = 0\n } else {\n this.touchDeltaX = event.touches[0].clientX - this.touchStartX\n }\n }\n\n const end = event => {\n if (this._pointerEvent && PointerType[event.pointerType.toUpperCase()]) {\n this.touchDeltaX = event.clientX - this.touchStartX\n }\n\n this._handleSwipe()\n if (this._config.pause === 'hover') {\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n\n this.pause()\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout)\n }\n\n this.touchTimeout = setTimeout(event => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n }\n }\n\n SelectorEngine.find(SELECTOR_ITEM_IMG, this._element).forEach(itemImg => {\n EventHandler.on(itemImg, EVENT_DRAG_START, e => e.preventDefault())\n })\n\n if (this._pointerEvent) {\n EventHandler.on(this._element, EVENT_POINTERDOWN, event => start(event))\n EventHandler.on(this._element, EVENT_POINTERUP, event => end(event))\n\n this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n } else {\n EventHandler.on(this._element, EVENT_TOUCHSTART, event => start(event))\n EventHandler.on(this._element, EVENT_TOUCHMOVE, event => move(event))\n EventHandler.on(this._element, EVENT_TOUCHEND, event => end(event))\n }\n }\n\n _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return\n }\n\n switch (event.key) {\n case ARROW_LEFT_KEY:\n event.preventDefault()\n this.prev()\n break\n case ARROW_RIGHT_KEY:\n event.preventDefault()\n this.next()\n break\n default:\n }\n }\n\n _getItemIndex(element) {\n this._items = element && element.parentNode ?\n SelectorEngine.find(SELECTOR_ITEM, element.parentNode) :\n []\n\n return this._items.indexOf(element)\n }\n\n _getItemByDirection(direction, activeElement) {\n const isNextDirection = direction === DIRECTION_NEXT\n const isPrevDirection = direction === DIRECTION_PREV\n const activeIndex = this._getItemIndex(activeElement)\n const lastItemIndex = this._items.length - 1\n const isGoingToWrap = (isPrevDirection && activeIndex === 0) ||\n (isNextDirection && activeIndex === lastItemIndex)\n\n if (isGoingToWrap && !this._config.wrap) {\n return activeElement\n }\n\n const delta = direction === DIRECTION_PREV ? -1 : 1\n const itemIndex = (activeIndex + delta) % this._items.length\n\n return itemIndex === -1 ?\n this._items[this._items.length - 1] :\n this._items[itemIndex]\n }\n\n _triggerSlideEvent(relatedTarget, eventDirectionName) {\n const targetIndex = this._getItemIndex(relatedTarget)\n const fromIndex = this._getItemIndex(SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element))\n\n return EventHandler.trigger(this._element, EVENT_SLIDE, {\n relatedTarget,\n direction: eventDirectionName,\n from: fromIndex,\n to: targetIndex\n })\n }\n\n _setActiveIndicatorElement(element) {\n if (this._indicatorsElement) {\n const indicators = SelectorEngine.find(SELECTOR_ACTIVE, this._indicatorsElement)\n\n for (let i = 0; i < indicators.length; i++) {\n indicators[i].classList.remove(CLASS_NAME_ACTIVE)\n }\n\n const nextIndicator = this._indicatorsElement.children[\n this._getItemIndex(element)\n ]\n\n if (nextIndicator) {\n nextIndicator.classList.add(CLASS_NAME_ACTIVE)\n }\n }\n }\n\n _updateInterval() {\n const element = this._activeElement || SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n\n if (!element) {\n return\n }\n\n const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10)\n\n if (elementInterval) {\n this._config.defaultInterval = this._config.defaultInterval || this._config.interval\n this._config.interval = elementInterval\n } else {\n this._config.interval = this._config.defaultInterval || this._config.interval\n }\n }\n\n _slide(direction, element) {\n const activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n const activeElementIndex = this._getItemIndex(activeElement)\n const nextElement = element || (activeElement && this._getItemByDirection(direction, activeElement))\n\n const nextElementIndex = this._getItemIndex(nextElement)\n const isCycling = Boolean(this._interval)\n\n let directionalClassName\n let orderClassName\n let eventDirectionName\n\n if (direction === DIRECTION_NEXT) {\n directionalClassName = CLASS_NAME_START\n orderClassName = CLASS_NAME_NEXT\n eventDirectionName = DIRECTION_LEFT\n } else {\n directionalClassName = CLASS_NAME_END\n orderClassName = CLASS_NAME_PREV\n eventDirectionName = DIRECTION_RIGHT\n }\n\n if (nextElement && nextElement.classList.contains(CLASS_NAME_ACTIVE)) {\n this._isSliding = false\n return\n }\n\n const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName)\n if (slideEvent.defaultPrevented) {\n return\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n return\n }\n\n this._isSliding = true\n\n if (isCycling) {\n this.pause()\n }\n\n this._setActiveIndicatorElement(nextElement)\n this._activeElement = nextElement\n\n if (this._element.classList.contains(CLASS_NAME_SLIDE)) {\n nextElement.classList.add(orderClassName)\n\n reflow(nextElement)\n\n activeElement.classList.add(directionalClassName)\n nextElement.classList.add(directionalClassName)\n\n const transitionDuration = getTransitionDurationFromElement(activeElement)\n\n EventHandler.one(activeElement, TRANSITION_END, () => {\n nextElement.classList.remove(directionalClassName, orderClassName)\n nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n activeElement.classList.remove(CLASS_NAME_ACTIVE, orderClassName, directionalClassName)\n\n this._isSliding = false\n\n setTimeout(() => {\n EventHandler.trigger(this._element, EVENT_SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n })\n }, 0)\n })\n\n emulateTransitionEnd(activeElement, transitionDuration)\n } else {\n activeElement.classList.remove(CLASS_NAME_ACTIVE)\n nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n this._isSliding = false\n EventHandler.trigger(this._element, EVENT_SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n })\n }\n\n if (isCycling) {\n this.cycle()\n }\n }\n\n // Static\n\n static carouselInterface(element, config) {\n let data = Data.getData(element, DATA_KEY)\n let _config = {\n ...Default,\n ...Manipulator.getDataAttributes(element)\n }\n\n if (typeof config === 'object') {\n _config = {\n ..._config,\n ...config\n }\n }\n\n const action = typeof config === 'string' ? config : _config.slide\n\n if (!data) {\n data = new Carousel(element, _config)\n }\n\n if (typeof config === 'number') {\n data.to(config)\n } else if (typeof action === 'string') {\n if (typeof data[action] === 'undefined') {\n throw new TypeError(`No method named \"${action}\"`)\n }\n\n data[action]()\n } else if (_config.interval && _config.ride) {\n data.pause()\n data.cycle()\n }\n }\n\n static jQueryInterface(config) {\n return this.each(function () {\n Carousel.carouselInterface(this, config)\n })\n }\n\n static dataApiClickHandler(event) {\n const target = getElementFromSelector(this)\n\n if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n return\n }\n\n const config = {\n ...Manipulator.getDataAttributes(target),\n ...Manipulator.getDataAttributes(this)\n }\n const slideIndex = this.getAttribute('data-bs-slide-to')\n\n if (slideIndex) {\n config.interval = false\n }\n\n Carousel.carouselInterface(target, config)\n\n if (slideIndex) {\n Data.getData(target, DATA_KEY).to(slideIndex)\n }\n\n event.preventDefault()\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, Carousel.dataApiClickHandler)\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE)\n\n for (let i = 0, len = carousels.length; i < len; i++) {\n Carousel.carouselInterface(carousels[i], Data.getData(carousels[i], DATA_KEY))\n }\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Carousel to jQuery only if jQuery is present\n */\n\nonDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Carousel.jQueryInterface\n $.fn[NAME].Constructor = Carousel\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Carousel.jQueryInterface\n }\n }\n})\n\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n getjQuery,\n onDOMContentLoaded,\n TRANSITION_END,\n emulateTransitionEnd,\n getSelectorFromElement,\n getElementFromSelector,\n getTransitionDurationFromElement,\n isElement,\n reflow,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'collapse'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst Default = {\n toggle: true,\n parent: ''\n}\n\nconst DefaultType = {\n toggle: 'boolean',\n parent: '(string|element)'\n}\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_COLLAPSE = 'collapse'\nconst CLASS_NAME_COLLAPSING = 'collapsing'\nconst CLASS_NAME_COLLAPSED = 'collapsed'\n\nconst WIDTH = 'width'\nconst HEIGHT = 'height'\n\nconst SELECTOR_ACTIVES = '.show, .collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"collapse\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Collapse extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._isTransitioning = false\n this._config = this._getConfig(config)\n this._triggerArray = SelectorEngine.find(\n `${SELECTOR_DATA_TOGGLE}[href=\"#${element.id}\"],` +\n `${SELECTOR_DATA_TOGGLE}[data-bs-target=\"#${element.id}\"]`\n )\n\n const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n for (let i = 0, len = toggleList.length; i < len; i++) {\n const elem = toggleList[i]\n const selector = getSelectorFromElement(elem)\n const filterElement = SelectorEngine.find(selector)\n .filter(foundElem => foundElem === element)\n\n if (selector !== null && filterElement.length) {\n this._selector = selector\n this._triggerArray.push(elem)\n }\n }\n\n this._parent = this._config.parent ? this._getParent() : null\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._element, this._triggerArray)\n }\n\n if (this._config.toggle) {\n this.toggle()\n }\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n toggle() {\n if (this._element.classList.contains(CLASS_NAME_SHOW)) {\n this.hide()\n } else {\n this.show()\n }\n }\n\n show() {\n if (this._isTransitioning || this._element.classList.contains(CLASS_NAME_SHOW)) {\n return\n }\n\n let actives\n let activesData\n\n if (this._parent) {\n actives = SelectorEngine.find(SELECTOR_ACTIVES, this._parent)\n .filter(elem => {\n if (typeof this._config.parent === 'string') {\n return elem.getAttribute('data-bs-parent') === this._config.parent\n }\n\n return elem.classList.contains(CLASS_NAME_COLLAPSE)\n })\n\n if (actives.length === 0) {\n actives = null\n }\n }\n\n const container = SelectorEngine.findOne(this._selector)\n if (actives) {\n const tempActiveData = actives.find(elem => container !== elem)\n activesData = tempActiveData ? Data.getData(tempActiveData, DATA_KEY) : null\n\n if (activesData && activesData._isTransitioning) {\n return\n }\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n if (startEvent.defaultPrevented) {\n return\n }\n\n if (actives) {\n actives.forEach(elemActive => {\n if (container !== elemActive) {\n Collapse.collapseInterface(elemActive, 'hide')\n }\n\n if (!activesData) {\n Data.setData(elemActive, DATA_KEY, null)\n }\n })\n }\n\n const dimension = this._getDimension()\n\n this._element.classList.remove(CLASS_NAME_COLLAPSE)\n this._element.classList.add(CLASS_NAME_COLLAPSING)\n\n this._element.style[dimension] = 0\n\n if (this._triggerArray.length) {\n this._triggerArray.forEach(element => {\n element.classList.remove(CLASS_NAME_COLLAPSED)\n element.setAttribute('aria-expanded', true)\n })\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n this._element.classList.remove(CLASS_NAME_COLLAPSING)\n this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n this._element.style[dimension] = ''\n\n this.setTransitioning(false)\n\n EventHandler.trigger(this._element, EVENT_SHOWN)\n }\n\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n const scrollSize = `scroll${capitalizedDimension}`\n const transitionDuration = getTransitionDurationFromElement(this._element)\n\n EventHandler.one(this._element, TRANSITION_END, complete)\n\n emulateTransitionEnd(this._element, transitionDuration)\n this._element.style[dimension] = `${this._element[scrollSize]}px`\n }\n\n hide() {\n if (this._isTransitioning || !this._element.classList.contains(CLASS_NAME_SHOW)) {\n return\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n if (startEvent.defaultPrevented) {\n return\n }\n\n const dimension = this._getDimension()\n\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n reflow(this._element)\n\n this._element.classList.add(CLASS_NAME_COLLAPSING)\n this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n const triggerArrayLength = this._triggerArray.length\n if (triggerArrayLength > 0) {\n for (let i = 0; i < triggerArrayLength; i++) {\n const trigger = this._triggerArray[i]\n const elem = getElementFromSelector(trigger)\n\n if (elem && !elem.classList.contains(CLASS_NAME_SHOW)) {\n trigger.classList.add(CLASS_NAME_COLLAPSED)\n trigger.setAttribute('aria-expanded', false)\n }\n }\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n this.setTransitioning(false)\n this._element.classList.remove(CLASS_NAME_COLLAPSING)\n this._element.classList.add(CLASS_NAME_COLLAPSE)\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n this._element.style[dimension] = ''\n const transitionDuration = getTransitionDurationFromElement(this._element)\n\n EventHandler.one(this._element, TRANSITION_END, complete)\n emulateTransitionEnd(this._element, transitionDuration)\n }\n\n setTransitioning(isTransitioning) {\n this._isTransitioning = isTransitioning\n }\n\n dispose() {\n super.dispose()\n this._config = null\n this._parent = null\n this._triggerArray = null\n this._isTransitioning = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n config.toggle = Boolean(config.toggle) // Coerce string values\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _getDimension() {\n return this._element.classList.contains(WIDTH) ? WIDTH : HEIGHT\n }\n\n _getParent() {\n let { parent } = this._config\n\n if (isElement(parent)) {\n // it's a jQuery object\n if (typeof parent.jquery !== 'undefined' || typeof parent[0] !== 'undefined') {\n parent = parent[0]\n }\n } else {\n parent = SelectorEngine.findOne(parent)\n }\n\n const selector = `${SELECTOR_DATA_TOGGLE}[data-bs-parent=\"${parent}\"]`\n\n SelectorEngine.find(selector, parent)\n .forEach(element => {\n const selected = getElementFromSelector(element)\n\n this._addAriaAndCollapsedClass(\n selected,\n [element]\n )\n })\n\n return parent\n }\n\n _addAriaAndCollapsedClass(element, triggerArray) {\n if (!element || !triggerArray.length) {\n return\n }\n\n const isOpen = element.classList.contains(CLASS_NAME_SHOW)\n\n triggerArray.forEach(elem => {\n if (isOpen) {\n elem.classList.remove(CLASS_NAME_COLLAPSED)\n } else {\n elem.classList.add(CLASS_NAME_COLLAPSED)\n }\n\n elem.setAttribute('aria-expanded', isOpen)\n })\n }\n\n // Static\n\n static collapseInterface(element, config) {\n let data = Data.getData(element, DATA_KEY)\n const _config = {\n ...Default,\n ...Manipulator.getDataAttributes(element),\n ...(typeof config === 'object' && config ? config : {})\n }\n\n if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false\n }\n\n if (!data) {\n data = new Collapse(element, _config)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n }\n\n static jQueryInterface(config) {\n return this.each(function () {\n Collapse.collapseInterface(this, config)\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n // preventDefault only for elements (which change the URL) not inside the collapsible element\n if (event.target.tagName === 'A') {\n event.preventDefault()\n }\n\n const triggerData = Manipulator.getDataAttributes(this)\n const selector = getSelectorFromElement(this)\n const selectorElements = SelectorEngine.find(selector)\n\n selectorElements.forEach(element => {\n const data = Data.getData(element, DATA_KEY)\n let config\n if (data) {\n // update parent attribute\n if (data._parent === null && typeof triggerData.parent === 'string') {\n data._config.parent = triggerData.parent\n data._parent = data._getParent()\n }\n\n config = 'toggle'\n } else {\n config = triggerData\n }\n\n Collapse.collapseInterface(element, config)\n })\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Collapse to jQuery only if jQuery is present\n */\n\nonDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Collapse.jQueryInterface\n $.fn[NAME].Constructor = Collapse\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Collapse.jQueryInterface\n }\n }\n})\n\nexport default Collapse\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\n\nimport {\n getjQuery,\n onDOMContentLoaded,\n getElementFromSelector,\n isElement,\n isVisible,\n isRTL,\n noop,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'dropdown'\nconst DATA_KEY = 'bs.dropdown'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst SPACE_KEY = 'Space'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst RIGHT_MOUSE_BUTTON = 2 // MouseEvent.button value for the secondary button, usually the right button\n\nconst REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEY}|${ARROW_DOWN_KEY}|${ESCAPE_KEY}`)\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK = `click${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DISABLED = 'disabled'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_DROPUP = 'dropup'\nconst CLASS_NAME_DROPEND = 'dropend'\nconst CLASS_NAME_DROPSTART = 'dropstart'\nconst CLASS_NAME_NAVBAR = 'navbar'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dropdown\"]'\nconst SELECTOR_FORM_CHILD = '.dropdown form'\nconst SELECTOR_MENU = '.dropdown-menu'\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav'\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n\nconst PLACEMENT_TOP = isRTL ? 'top-end' : 'top-start'\nconst PLACEMENT_TOPEND = isRTL ? 'top-start' : 'top-end'\nconst PLACEMENT_BOTTOM = isRTL ? 'bottom-end' : 'bottom-start'\nconst PLACEMENT_BOTTOMEND = isRTL ? 'bottom-start' : 'bottom-end'\nconst PLACEMENT_RIGHT = isRTL ? 'left-start' : 'right-start'\nconst PLACEMENT_LEFT = isRTL ? 'right-start' : 'left-start'\n\nconst Default = {\n offset: 0,\n flip: true,\n boundary: 'clippingParents',\n reference: 'toggle',\n display: 'dynamic',\n popperConfig: null\n}\n\nconst DefaultType = {\n offset: '(number|string|function)',\n flip: 'boolean',\n boundary: '(string|element)',\n reference: '(string|element)',\n display: 'string',\n popperConfig: '(null|object)'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Dropdown extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._popper = null\n this._config = this._getConfig(config)\n this._menu = this._getMenuElement()\n this._inNavbar = this._detectNavbar()\n\n this._addEventListeners()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n toggle() {\n if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED)) {\n return\n }\n\n const isActive = this._element.classList.contains(CLASS_NAME_SHOW)\n\n Dropdown.clearMenus()\n\n if (isActive) {\n return\n }\n\n this.show()\n }\n\n show() {\n if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED) || this._menu.classList.contains(CLASS_NAME_SHOW)) {\n return\n }\n\n const parent = Dropdown.getParentFromElement(this._element)\n const relatedTarget = {\n relatedTarget: this._element\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, relatedTarget)\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n // Totally disable Popper for Dropdowns in Navbar\n if (!this._inNavbar) {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)')\n }\n\n let referenceElement = this._element\n\n if (this._config.reference === 'parent') {\n referenceElement = parent\n } else if (isElement(this._config.reference)) {\n referenceElement = this._config.reference\n\n // Check if it's jQuery element\n if (typeof this._config.reference.jquery !== 'undefined') {\n referenceElement = this._config.reference[0]\n }\n }\n\n this._popper = Popper.createPopper(referenceElement, this._menu, this._getPopperConfig())\n }\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement &&\n !parent.closest(SELECTOR_NAVBAR_NAV)) {\n [].concat(...document.body.children)\n .forEach(elem => EventHandler.on(elem, 'mouseover', null, noop()))\n }\n\n this._element.focus()\n this._element.setAttribute('aria-expanded', true)\n\n this._menu.classList.toggle(CLASS_NAME_SHOW)\n this._element.classList.toggle(CLASS_NAME_SHOW)\n EventHandler.trigger(parent, EVENT_SHOWN, relatedTarget)\n }\n\n hide() {\n if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED) || !this._menu.classList.contains(CLASS_NAME_SHOW)) {\n return\n }\n\n const parent = Dropdown.getParentFromElement(this._element)\n const relatedTarget = {\n relatedTarget: this._element\n }\n\n const hideEvent = EventHandler.trigger(parent, EVENT_HIDE, relatedTarget)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n if (this._popper) {\n this._popper.destroy()\n }\n\n this._menu.classList.toggle(CLASS_NAME_SHOW)\n this._element.classList.toggle(CLASS_NAME_SHOW)\n EventHandler.trigger(parent, EVENT_HIDDEN, relatedTarget)\n }\n\n dispose() {\n super.dispose()\n EventHandler.off(this._element, EVENT_KEY)\n this._menu = null\n\n if (this._popper) {\n this._popper.destroy()\n this._popper = null\n }\n }\n\n update() {\n this._inNavbar = this._detectNavbar()\n if (this._popper) {\n this._popper.update()\n }\n }\n\n // Private\n\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_CLICK, event => {\n event.preventDefault()\n event.stopPropagation()\n this.toggle()\n })\n }\n\n _getConfig(config) {\n config = {\n ...this.constructor.Default,\n ...Manipulator.getDataAttributes(this._element),\n ...config\n }\n\n typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n return config\n }\n\n _getMenuElement() {\n return SelectorEngine.next(this._element, SELECTOR_MENU)[0]\n }\n\n _getPlacement() {\n const parentDropdown = this._element.parentNode\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {\n return PLACEMENT_RIGHT\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {\n return PLACEMENT_LEFT\n }\n\n // We need to trim the value because custom properties can also include spaces\n const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end'\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {\n return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP\n }\n\n return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM\n }\n\n _detectNavbar() {\n return this._element.closest(`.${CLASS_NAME_NAVBAR}`) !== null\n }\n\n _getPopperConfig() {\n const popperConfig = {\n placement: this._getPlacement(),\n modifiers: [{\n name: 'preventOverflow',\n options: {\n altBoundary: this._config.flip,\n rootBoundary: this._config.boundary\n }\n }]\n }\n\n // Disable Popper if we have a static display\n if (this._config.display === 'static') {\n popperConfig.modifiers = [{\n name: 'applyStyles',\n enabled: false\n }]\n }\n\n return {\n ...popperConfig,\n ...this._config.popperConfig\n }\n }\n\n // Static\n\n static dropdownInterface(element, config) {\n let data = Data.getData(element, DATA_KEY)\n const _config = typeof config === 'object' ? config : null\n\n if (!data) {\n data = new Dropdown(element, _config)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n }\n\n static jQueryInterface(config) {\n return this.each(function () {\n Dropdown.dropdownInterface(this, config)\n })\n }\n\n static clearMenus(event) {\n if (event && (event.button === RIGHT_MOUSE_BUTTON || (event.type === 'keyup' && event.key !== TAB_KEY))) {\n return\n }\n\n const toggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n for (let i = 0, len = toggles.length; i < len; i++) {\n const parent = Dropdown.getParentFromElement(toggles[i])\n const context = Data.getData(toggles[i], DATA_KEY)\n const relatedTarget = {\n relatedTarget: toggles[i]\n }\n\n if (event && event.type === 'click') {\n relatedTarget.clickEvent = event\n }\n\n if (!context) {\n continue\n }\n\n const dropdownMenu = context._menu\n if (!toggles[i].classList.contains(CLASS_NAME_SHOW)) {\n continue\n }\n\n if (event && ((event.type === 'click' &&\n /input|textarea/i.test(event.target.tagName)) ||\n (event.type === 'keyup' && event.key === TAB_KEY)) &&\n dropdownMenu.contains(event.target)) {\n continue\n }\n\n const hideEvent = EventHandler.trigger(parent, EVENT_HIDE, relatedTarget)\n if (hideEvent.defaultPrevented) {\n continue\n }\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n [].concat(...document.body.children)\n .forEach(elem => EventHandler.off(elem, 'mouseover', null, noop()))\n }\n\n toggles[i].setAttribute('aria-expanded', 'false')\n\n if (context._popper) {\n context._popper.destroy()\n }\n\n dropdownMenu.classList.remove(CLASS_NAME_SHOW)\n toggles[i].classList.remove(CLASS_NAME_SHOW)\n EventHandler.trigger(parent, EVENT_HIDDEN, relatedTarget)\n }\n }\n\n static getParentFromElement(element) {\n return getElementFromSelector(element) || element.parentNode\n }\n\n static dataApiKeydownHandler(event) {\n // If not input/textarea:\n // - And not a key in REGEXP_KEYDOWN => not a dropdown command\n // If input/textarea:\n // - If space key => not a dropdown command\n // - If key is other than escape\n // - If key is not up or down => not a dropdown command\n // - If trigger inside the menu => not a dropdown command\n if (/input|textarea/i.test(event.target.tagName) ?\n event.key === SPACE_KEY || (event.key !== ESCAPE_KEY &&\n ((event.key !== ARROW_DOWN_KEY && event.key !== ARROW_UP_KEY) ||\n event.target.closest(SELECTOR_MENU))) :\n !REGEXP_KEYDOWN.test(event.key)) {\n return\n }\n\n event.preventDefault()\n event.stopPropagation()\n\n if (this.disabled || this.classList.contains(CLASS_NAME_DISABLED)) {\n return\n }\n\n const parent = Dropdown.getParentFromElement(this)\n const isActive = this.classList.contains(CLASS_NAME_SHOW)\n\n if (event.key === ESCAPE_KEY) {\n const button = this.matches(SELECTOR_DATA_TOGGLE) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0]\n button.focus()\n Dropdown.clearMenus()\n return\n }\n\n if (!isActive || event.key === SPACE_KEY) {\n Dropdown.clearMenus()\n return\n }\n\n const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, parent).filter(isVisible)\n\n if (!items.length) {\n return\n }\n\n let index = items.indexOf(event.target)\n\n // Up\n if (event.key === ARROW_UP_KEY && index > 0) {\n index--\n }\n\n // Down\n if (event.key === ARROW_DOWN_KEY && index < items.length - 1) {\n index++\n }\n\n // index is -1 if the first keydown is an ArrowUp\n index = index === -1 ? 0 : index\n\n items[index].focus()\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_CLICK_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n event.preventDefault()\n event.stopPropagation()\n Dropdown.dropdownInterface(this, 'toggle')\n})\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_FORM_CHILD, e => e.stopPropagation())\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Dropdown to jQuery only if jQuery is present\n */\n\nonDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Dropdown.jQueryInterface\n $.fn[NAME].Constructor = Dropdown\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Dropdown.jQueryInterface\n }\n }\n})\n\nexport default Dropdown\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n getjQuery,\n onDOMContentLoaded,\n TRANSITION_END,\n emulateTransitionEnd,\n getElementFromSelector,\n getTransitionDurationFromElement,\n isVisible,\n isRTL,\n reflow,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'modal'\nconst DATA_KEY = 'bs.modal'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst ESCAPE_KEY = 'Escape'\n\nconst Default = {\n backdrop: true,\n keyboard: true,\n focus: true\n}\n\nconst DefaultType = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n focus: 'boolean'\n}\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEUP_DISMISS = `mouseup.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SCROLLBAR_MEASURER = 'modal-scrollbar-measure'\nconst CLASS_NAME_BACKDROP = 'modal-backdrop'\nconst CLASS_NAME_OPEN = 'modal-open'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_STATIC = 'modal-static'\n\nconst SELECTOR_DIALOG = '.modal-dialog'\nconst SELECTOR_MODAL_BODY = '.modal-body'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"modal\"]'\nconst SELECTOR_DATA_DISMISS = '[data-bs-dismiss=\"modal\"]'\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Modal extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._config = this._getConfig(config)\n this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, element)\n this._backdrop = null\n this._isShown = false\n this._isBodyOverflowing = false\n this._ignoreBackdropClick = false\n this._isTransitioning = false\n this._scrollbarWidth = 0\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget)\n }\n\n show(relatedTarget) {\n if (this._isShown || this._isTransitioning) {\n return\n }\n\n if (this._element.classList.contains(CLASS_NAME_FADE)) {\n this._isTransitioning = true\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n relatedTarget\n })\n\n if (this._isShown || showEvent.defaultPrevented) {\n return\n }\n\n this._isShown = true\n\n this._checkScrollbar()\n this._setScrollbar()\n\n this._adjustDialog()\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n EventHandler.on(this._element, EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, event => this.hide(event))\n\n EventHandler.on(this._dialog, EVENT_MOUSEDOWN_DISMISS, () => {\n EventHandler.one(this._element, EVENT_MOUSEUP_DISMISS, event => {\n if (event.target === this._element) {\n this._ignoreBackdropClick = true\n }\n })\n })\n\n this._showBackdrop(() => this._showElement(relatedTarget))\n }\n\n hide(event) {\n if (event) {\n event.preventDefault()\n }\n\n if (!this._isShown || this._isTransitioning) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n this._isShown = false\n const transition = this._element.classList.contains(CLASS_NAME_FADE)\n\n if (transition) {\n this._isTransitioning = true\n }\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n EventHandler.off(document, EVENT_FOCUSIN)\n\n this._element.classList.remove(CLASS_NAME_SHOW)\n\n EventHandler.off(this._element, EVENT_CLICK_DISMISS)\n EventHandler.off(this._dialog, EVENT_MOUSEDOWN_DISMISS)\n\n if (transition) {\n const transitionDuration = getTransitionDurationFromElement(this._element)\n\n EventHandler.one(this._element, TRANSITION_END, event => this._hideModal(event))\n emulateTransitionEnd(this._element, transitionDuration)\n } else {\n this._hideModal()\n }\n }\n\n dispose() {\n [window, this._element, this._dialog]\n .forEach(htmlElement => EventHandler.off(htmlElement, EVENT_KEY))\n\n super.dispose()\n\n /**\n * `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API`\n * Do not move `document` in `htmlElements` array\n * It will remove `EVENT_CLICK_DATA_API` event that should remain\n */\n EventHandler.off(document, EVENT_FOCUSIN)\n\n this._config = null\n this._dialog = null\n this._backdrop = null\n this._isShown = null\n this._isBodyOverflowing = null\n this._ignoreBackdropClick = null\n this._isTransitioning = null\n this._scrollbarWidth = null\n }\n\n handleUpdate() {\n this._adjustDialog()\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _showElement(relatedTarget) {\n const transition = this._element.classList.contains(CLASS_NAME_FADE)\n const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog)\n\n if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n // Don't move modal's DOM position\n document.body.appendChild(this._element)\n }\n\n this._element.style.display = 'block'\n this._element.removeAttribute('aria-hidden')\n this._element.setAttribute('aria-modal', true)\n this._element.setAttribute('role', 'dialog')\n this._element.scrollTop = 0\n\n if (modalBody) {\n modalBody.scrollTop = 0\n }\n\n if (transition) {\n reflow(this._element)\n }\n\n this._element.classList.add(CLASS_NAME_SHOW)\n\n if (this._config.focus) {\n this._enforceFocus()\n }\n\n const transitionComplete = () => {\n if (this._config.focus) {\n this._element.focus()\n }\n\n this._isTransitioning = false\n EventHandler.trigger(this._element, EVENT_SHOWN, {\n relatedTarget\n })\n }\n\n if (transition) {\n const transitionDuration = getTransitionDurationFromElement(this._dialog)\n\n EventHandler.one(this._dialog, TRANSITION_END, transitionComplete)\n emulateTransitionEnd(this._dialog, transitionDuration)\n } else {\n transitionComplete()\n }\n }\n\n _enforceFocus() {\n EventHandler.off(document, EVENT_FOCUSIN) // guard against infinite focus loop\n EventHandler.on(document, EVENT_FOCUSIN, event => {\n if (document !== event.target &&\n this._element !== event.target &&\n !this._element.contains(event.target)) {\n this._element.focus()\n }\n })\n }\n\n _setEscapeEvent() {\n if (this._isShown) {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n if (this._config.keyboard && event.key === ESCAPE_KEY) {\n event.preventDefault()\n this.hide()\n } else if (!this._config.keyboard && event.key === ESCAPE_KEY) {\n this._triggerBackdropTransition()\n }\n })\n } else {\n EventHandler.off(this._element, EVENT_KEYDOWN_DISMISS)\n }\n }\n\n _setResizeEvent() {\n if (this._isShown) {\n EventHandler.on(window, EVENT_RESIZE, () => this._adjustDialog())\n } else {\n EventHandler.off(window, EVENT_RESIZE)\n }\n }\n\n _hideModal() {\n this._element.style.display = 'none'\n this._element.setAttribute('aria-hidden', true)\n this._element.removeAttribute('aria-modal')\n this._element.removeAttribute('role')\n this._isTransitioning = false\n this._showBackdrop(() => {\n document.body.classList.remove(CLASS_NAME_OPEN)\n this._resetAdjustments()\n this._resetScrollbar()\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n })\n }\n\n _removeBackdrop() {\n this._backdrop.parentNode.removeChild(this._backdrop)\n this._backdrop = null\n }\n\n _showBackdrop(callback) {\n const animate = this._element.classList.contains(CLASS_NAME_FADE) ?\n CLASS_NAME_FADE :\n ''\n\n if (this._isShown && this._config.backdrop) {\n this._backdrop = document.createElement('div')\n this._backdrop.className = CLASS_NAME_BACKDROP\n\n if (animate) {\n this._backdrop.classList.add(animate)\n }\n\n document.body.appendChild(this._backdrop)\n\n EventHandler.on(this._element, EVENT_CLICK_DISMISS, event => {\n if (this._ignoreBackdropClick) {\n this._ignoreBackdropClick = false\n return\n }\n\n if (event.target !== event.currentTarget) {\n return\n }\n\n if (this._config.backdrop === 'static') {\n this._triggerBackdropTransition()\n } else {\n this.hide()\n }\n })\n\n if (animate) {\n reflow(this._backdrop)\n }\n\n this._backdrop.classList.add(CLASS_NAME_SHOW)\n\n if (!animate) {\n callback()\n return\n }\n\n const backdropTransitionDuration = getTransitionDurationFromElement(this._backdrop)\n\n EventHandler.one(this._backdrop, TRANSITION_END, callback)\n emulateTransitionEnd(this._backdrop, backdropTransitionDuration)\n } else if (!this._isShown && this._backdrop) {\n this._backdrop.classList.remove(CLASS_NAME_SHOW)\n\n const callbackRemove = () => {\n this._removeBackdrop()\n callback()\n }\n\n if (this._element.classList.contains(CLASS_NAME_FADE)) {\n const backdropTransitionDuration = getTransitionDurationFromElement(this._backdrop)\n EventHandler.one(this._backdrop, TRANSITION_END, callbackRemove)\n emulateTransitionEnd(this._backdrop, backdropTransitionDuration)\n } else {\n callbackRemove()\n }\n } else {\n callback()\n }\n }\n\n _triggerBackdropTransition() {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n if (hideEvent.defaultPrevented) {\n return\n }\n\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n\n if (!isModalOverflowing) {\n this._element.style.overflowY = 'hidden'\n }\n\n this._element.classList.add(CLASS_NAME_STATIC)\n const modalTransitionDuration = getTransitionDurationFromElement(this._dialog)\n EventHandler.off(this._element, TRANSITION_END)\n EventHandler.one(this._element, TRANSITION_END, () => {\n this._element.classList.remove(CLASS_NAME_STATIC)\n if (!isModalOverflowing) {\n EventHandler.one(this._element, TRANSITION_END, () => {\n this._element.style.overflowY = ''\n })\n emulateTransitionEnd(this._element, modalTransitionDuration)\n }\n })\n emulateTransitionEnd(this._element, modalTransitionDuration)\n this._element.focus()\n }\n\n // ----------------------------------------------------------------------\n // the following methods are used to handle overflowing modals\n // ----------------------------------------------------------------------\n\n _adjustDialog() {\n const isModalOverflowing =\n this._element.scrollHeight > document.documentElement.clientHeight\n\n if ((!this._isBodyOverflowing && isModalOverflowing && !isRTL) || (this._isBodyOverflowing && !isModalOverflowing && isRTL)) {\n this._element.style.paddingLeft = `${this._scrollbarWidth}px`\n }\n\n if ((this._isBodyOverflowing && !isModalOverflowing && !isRTL) || (!this._isBodyOverflowing && isModalOverflowing && isRTL)) {\n this._element.style.paddingRight = `${this._scrollbarWidth}px`\n }\n }\n\n _resetAdjustments() {\n this._element.style.paddingLeft = ''\n this._element.style.paddingRight = ''\n }\n\n _checkScrollbar() {\n const rect = document.body.getBoundingClientRect()\n this._isBodyOverflowing = Math.round(rect.left + rect.right) < window.innerWidth\n this._scrollbarWidth = this._getScrollbarWidth()\n }\n\n _setScrollbar() {\n if (this._isBodyOverflowing) {\n // Note: DOMNode.style.paddingRight returns the actual value or '' if not set\n // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set\n\n // Adjust fixed content padding\n SelectorEngine.find(SELECTOR_FIXED_CONTENT)\n .forEach(element => {\n const actualPadding = element.style.paddingRight\n const calculatedPadding = window.getComputedStyle(element)['padding-right']\n Manipulator.setDataAttribute(element, 'padding-right', actualPadding)\n element.style.paddingRight = `${Number.parseFloat(calculatedPadding) + this._scrollbarWidth}px`\n })\n\n // Adjust sticky content margin\n SelectorEngine.find(SELECTOR_STICKY_CONTENT)\n .forEach(element => {\n const actualMargin = element.style.marginRight\n const calculatedMargin = window.getComputedStyle(element)['margin-right']\n Manipulator.setDataAttribute(element, 'margin-right', actualMargin)\n element.style.marginRight = `${Number.parseFloat(calculatedMargin) - this._scrollbarWidth}px`\n })\n\n // Adjust body padding\n const actualPadding = document.body.style.paddingRight\n const calculatedPadding = window.getComputedStyle(document.body)['padding-right']\n\n Manipulator.setDataAttribute(document.body, 'padding-right', actualPadding)\n document.body.style.paddingRight = `${Number.parseFloat(calculatedPadding) + this._scrollbarWidth}px`\n }\n\n document.body.classList.add(CLASS_NAME_OPEN)\n }\n\n _resetScrollbar() {\n // Restore fixed content padding\n SelectorEngine.find(SELECTOR_FIXED_CONTENT)\n .forEach(element => {\n const padding = Manipulator.getDataAttribute(element, 'padding-right')\n if (typeof padding !== 'undefined') {\n Manipulator.removeDataAttribute(element, 'padding-right')\n element.style.paddingRight = padding\n }\n })\n\n // Restore sticky content and navbar-toggler margin\n SelectorEngine.find(`${SELECTOR_STICKY_CONTENT}`)\n .forEach(element => {\n const margin = Manipulator.getDataAttribute(element, 'margin-right')\n if (typeof margin !== 'undefined') {\n Manipulator.removeDataAttribute(element, 'margin-right')\n element.style.marginRight = margin\n }\n })\n\n // Restore body padding\n const padding = Manipulator.getDataAttribute(document.body, 'padding-right')\n if (typeof padding === 'undefined') {\n document.body.style.paddingRight = ''\n } else {\n Manipulator.removeDataAttribute(document.body, 'padding-right')\n document.body.style.paddingRight = padding\n }\n }\n\n _getScrollbarWidth() { // thx d.walsh\n const scrollDiv = document.createElement('div')\n scrollDiv.className = CLASS_NAME_SCROLLBAR_MEASURER\n document.body.appendChild(scrollDiv)\n const scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth\n document.body.removeChild(scrollDiv)\n return scrollbarWidth\n }\n\n // Static\n\n static jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY)\n const _config = {\n ...Default,\n ...Manipulator.getDataAttributes(this),\n ...(typeof config === 'object' && config ? config : {})\n }\n\n if (!data) {\n data = new Modal(this, _config)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](relatedTarget)\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n const target = getElementFromSelector(this)\n\n if (this.tagName === 'A' || this.tagName === 'AREA') {\n event.preventDefault()\n }\n\n EventHandler.one(target, EVENT_SHOW, showEvent => {\n if (showEvent.defaultPrevented) {\n // only register focus restorer if modal will actually get shown\n return\n }\n\n EventHandler.one(target, EVENT_HIDDEN, () => {\n if (isVisible(this)) {\n this.focus()\n }\n })\n })\n\n let data = Data.getData(target, DATA_KEY)\n if (!data) {\n const config = {\n ...Manipulator.getDataAttributes(target),\n ...Manipulator.getDataAttributes(this)\n }\n\n data = new Modal(target, config)\n }\n\n data.show(this)\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Modal to jQuery only if jQuery is present\n */\n\nonDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Modal.jQueryInterface\n $.fn[NAME].Constructor = Modal\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Modal.jQueryInterface\n }\n }\n})\n\nexport default Modal\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst uriAttrs = new Set([\n 'background',\n 'cite',\n 'href',\n 'itemtype',\n 'longdesc',\n 'poster',\n 'src',\n 'xlink:href'\n])\n\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\n/**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/gi\n\n/**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i\n\nconst allowedAttribute = (attr, allowedAttributeList) => {\n const attrName = attr.nodeName.toLowerCase()\n\n if (allowedAttributeList.includes(attrName)) {\n if (uriAttrs.has(attrName)) {\n return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN))\n }\n\n return true\n }\n\n const regExp = allowedAttributeList.filter(attrRegex => attrRegex instanceof RegExp)\n\n // Check if a regular expression validates the attribute.\n for (let i = 0, len = regExp.length; i < len; i++) {\n if (attrName.match(regExp[i])) {\n return true\n }\n }\n\n return false\n}\n\nexport const DefaultAllowlist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n}\n\nexport function sanitizeHtml(unsafeHtml, allowList, sanitizeFn) {\n if (!unsafeHtml.length) {\n return unsafeHtml\n }\n\n if (sanitizeFn && typeof sanitizeFn === 'function') {\n return sanitizeFn(unsafeHtml)\n }\n\n const domParser = new window.DOMParser()\n const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n const allowlistKeys = Object.keys(allowList)\n const elements = [].concat(...createdDocument.body.querySelectorAll('*'))\n\n for (let i = 0, len = elements.length; i < len; i++) {\n const el = elements[i]\n const elName = el.nodeName.toLowerCase()\n\n if (!allowlistKeys.includes(elName)) {\n el.parentNode.removeChild(el)\n\n continue\n }\n\n const attributeList = [].concat(...el.attributes)\n const allowedAttributes = [].concat(allowList['*'] || [], allowList[elName] || [])\n\n attributeList.forEach(attr => {\n if (!allowedAttribute(attr, allowedAttributes)) {\n el.removeAttribute(attr.nodeName)\n }\n })\n }\n\n return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\n\nimport {\n getjQuery,\n onDOMContentLoaded,\n TRANSITION_END,\n emulateTransitionEnd,\n findShadowRoot,\n getTransitionDurationFromElement,\n getUID,\n isElement,\n isRTL,\n noop,\n typeCheckConfig\n} from './util/index'\nimport {\n DefaultAllowlist,\n sanitizeHtml\n} from './util/sanitizer'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tooltip'\nconst DATA_KEY = 'bs.tooltip'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst CLASS_PREFIX = 'bs-tooltip'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn'])\n\nconst DefaultType = {\n animation: 'boolean',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string',\n delay: '(number|object)',\n html: 'boolean',\n selector: '(string|boolean)',\n placement: '(string|function)',\n container: '(string|element|boolean)',\n fallbackPlacements: '(null|array)',\n boundary: '(string|element)',\n customClass: '(string|function)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n allowList: 'object',\n popperConfig: '(null|object)'\n}\n\nconst AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: isRTL ? 'left' : 'right',\n BOTTOM: 'bottom',\n LEFT: isRTL ? 'right' : 'left'\n}\n\nconst Default = {\n animation: true,\n template: '' +\n '' +\n '' +\n '',\n trigger: 'hover focus',\n title: '',\n delay: 0,\n html: false,\n selector: false,\n placement: 'top',\n container: false,\n fallbackPlacements: null,\n boundary: 'clippingParents',\n customClass: '',\n sanitize: true,\n sanitizeFn: null,\n allowList: DefaultAllowlist,\n popperConfig: null\n}\n\nconst Event = {\n HIDE: `hide${EVENT_KEY}`,\n HIDDEN: `hidden${EVENT_KEY}`,\n SHOW: `show${EVENT_KEY}`,\n SHOWN: `shown${EVENT_KEY}`,\n INSERTED: `inserted${EVENT_KEY}`,\n CLICK: `click${EVENT_KEY}`,\n FOCUSIN: `focusin${EVENT_KEY}`,\n FOCUSOUT: `focusout${EVENT_KEY}`,\n MOUSEENTER: `mouseenter${EVENT_KEY}`,\n MOUSELEAVE: `mouseleave${EVENT_KEY}`\n}\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_MODAL = 'modal'\nconst CLASS_NAME_SHOW = 'show'\n\nconst HOVER_STATE_SHOW = 'show'\nconst HOVER_STATE_OUT = 'out'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tooltip extends BaseComponent {\n constructor(element, config) {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)')\n }\n\n super(element)\n\n // private\n this._isEnabled = true\n this._timeout = 0\n this._hoverState = ''\n this._activeTrigger = {}\n this._popper = null\n\n // Protected\n this.config = this._getConfig(config)\n this.tip = null\n\n this._setListeners()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n static get Event() {\n return Event\n }\n\n static get EVENT_KEY() {\n return EVENT_KEY\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Public\n\n enable() {\n this._isEnabled = true\n }\n\n disable() {\n this._isEnabled = false\n }\n\n toggleEnabled() {\n this._isEnabled = !this._isEnabled\n }\n\n toggle(event) {\n if (!this._isEnabled) {\n return\n }\n\n if (event) {\n const dataKey = this.constructor.DATA_KEY\n let context = Data.getData(event.delegateTarget, dataKey)\n\n if (!context) {\n context = new this.constructor(event.delegateTarget, this._getDelegateConfig())\n Data.setData(event.delegateTarget, dataKey, context)\n }\n\n context._activeTrigger.click = !context._activeTrigger.click\n\n if (context._isWithActiveTrigger()) {\n context._enter(null, context)\n } else {\n context._leave(null, context)\n }\n } else {\n if (this.getTipElement().classList.contains(CLASS_NAME_SHOW)) {\n this._leave(null, this)\n return\n }\n\n this._enter(null, this)\n }\n }\n\n dispose() {\n clearTimeout(this._timeout)\n\n EventHandler.off(this._element, this.constructor.EVENT_KEY)\n EventHandler.off(this._element.closest(`.${CLASS_NAME_MODAL}`), 'hide.bs.modal', this._hideModalHandler)\n\n if (this.tip) {\n this.tip.parentNode.removeChild(this.tip)\n }\n\n this._isEnabled = null\n this._timeout = null\n this._hoverState = null\n this._activeTrigger = null\n if (this._popper) {\n this._popper.destroy()\n }\n\n this._popper = null\n this.config = null\n this.tip = null\n super.dispose()\n }\n\n show() {\n if (this._element.style.display === 'none') {\n throw new Error('Please use show on visible elements')\n }\n\n if (this.isWithContent() && this._isEnabled) {\n const showEvent = EventHandler.trigger(this._element, this.constructor.Event.SHOW)\n const shadowRoot = findShadowRoot(this._element)\n const isInTheDom = shadowRoot === null ?\n this._element.ownerDocument.documentElement.contains(this._element) :\n shadowRoot.contains(this._element)\n\n if (showEvent.defaultPrevented || !isInTheDom) {\n return\n }\n\n const tip = this.getTipElement()\n const tipId = getUID(this.constructor.NAME)\n\n tip.setAttribute('id', tipId)\n this._element.setAttribute('aria-describedby', tipId)\n\n this.setContent()\n\n if (this.config.animation) {\n tip.classList.add(CLASS_NAME_FADE)\n }\n\n const placement = typeof this.config.placement === 'function' ?\n this.config.placement.call(this, tip, this._element) :\n this.config.placement\n\n const attachment = this._getAttachment(placement)\n this._addAttachmentClass(attachment)\n\n const container = this._getContainer()\n Data.setData(tip, this.constructor.DATA_KEY, this)\n\n if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n container.appendChild(tip)\n }\n\n EventHandler.trigger(this._element, this.constructor.Event.INSERTED)\n\n this._popper = Popper.createPopper(this._element, tip, this._getPopperConfig(attachment))\n\n tip.classList.add(CLASS_NAME_SHOW)\n\n const customClass = typeof this.config.customClass === 'function' ? this.config.customClass() : this.config.customClass\n if (customClass) {\n tip.classList.add(...customClass.split(' '))\n }\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement) {\n [].concat(...document.body.children).forEach(element => {\n EventHandler.on(element, 'mouseover', noop())\n })\n }\n\n const complete = () => {\n const prevHoverState = this._hoverState\n\n this._hoverState = null\n EventHandler.trigger(this._element, this.constructor.Event.SHOWN)\n\n if (prevHoverState === HOVER_STATE_OUT) {\n this._leave(null, this)\n }\n }\n\n if (this.tip.classList.contains(CLASS_NAME_FADE)) {\n const transitionDuration = getTransitionDurationFromElement(this.tip)\n EventHandler.one(this.tip, TRANSITION_END, complete)\n emulateTransitionEnd(this.tip, transitionDuration)\n } else {\n complete()\n }\n }\n }\n\n hide() {\n if (!this._popper) {\n return\n }\n\n const tip = this.getTipElement()\n const complete = () => {\n if (this._hoverState !== HOVER_STATE_SHOW && tip.parentNode) {\n tip.parentNode.removeChild(tip)\n }\n\n this._cleanTipClass()\n this._element.removeAttribute('aria-describedby')\n EventHandler.trigger(this._element, this.constructor.Event.HIDDEN)\n\n if (this._popper) {\n this._popper.destroy()\n this._popper = null\n }\n }\n\n const hideEvent = EventHandler.trigger(this._element, this.constructor.Event.HIDE)\n if (hideEvent.defaultPrevented) {\n return\n }\n\n tip.classList.remove(CLASS_NAME_SHOW)\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n [].concat(...document.body.children)\n .forEach(element => EventHandler.off(element, 'mouseover', noop))\n }\n\n this._activeTrigger[TRIGGER_CLICK] = false\n this._activeTrigger[TRIGGER_FOCUS] = false\n this._activeTrigger[TRIGGER_HOVER] = false\n\n if (this.tip.classList.contains(CLASS_NAME_FADE)) {\n const transitionDuration = getTransitionDurationFromElement(tip)\n\n EventHandler.one(tip, TRANSITION_END, complete)\n emulateTransitionEnd(tip, transitionDuration)\n } else {\n complete()\n }\n\n this._hoverState = ''\n }\n\n update() {\n if (this._popper !== null) {\n this._popper.update()\n }\n }\n\n // Protected\n\n isWithContent() {\n return Boolean(this.getTitle())\n }\n\n getTipElement() {\n if (this.tip) {\n return this.tip\n }\n\n const element = document.createElement('div')\n element.innerHTML = this.config.template\n\n this.tip = element.children[0]\n return this.tip\n }\n\n setContent() {\n const tip = this.getTipElement()\n this.setElementContent(SelectorEngine.findOne(SELECTOR_TOOLTIP_INNER, tip), this.getTitle())\n tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n }\n\n setElementContent(element, content) {\n if (element === null) {\n return\n }\n\n if (typeof content === 'object' && isElement(content)) {\n if (content.jquery) {\n content = content[0]\n }\n\n // content is a DOM node or a jQuery\n if (this.config.html) {\n if (content.parentNode !== element) {\n element.innerHTML = ''\n element.appendChild(content)\n }\n } else {\n element.textContent = content.textContent\n }\n\n return\n }\n\n if (this.config.html) {\n if (this.config.sanitize) {\n content = sanitizeHtml(content, this.config.allowList, this.config.sanitizeFn)\n }\n\n element.innerHTML = content\n } else {\n element.textContent = content\n }\n }\n\n getTitle() {\n let title = this._element.getAttribute('data-bs-original-title')\n\n if (!title) {\n title = typeof this.config.title === 'function' ?\n this.config.title.call(this._element) :\n this.config.title\n }\n\n return title\n }\n\n updateAttachment(attachment) {\n if (attachment === 'right') {\n return 'end'\n }\n\n if (attachment === 'left') {\n return 'start'\n }\n\n return attachment\n }\n\n // Private\n\n _getPopperConfig(attachment) {\n const flipModifier = {\n name: 'flip',\n options: {\n altBoundary: true\n }\n }\n\n if (this.config.fallbackPlacements) {\n flipModifier.options.fallbackPlacements = this.config.fallbackPlacements\n }\n\n const defaultBsConfig = {\n placement: attachment,\n modifiers: [\n flipModifier,\n {\n name: 'preventOverflow',\n options: {\n rootBoundary: this.config.boundary\n }\n },\n {\n name: 'arrow',\n options: {\n element: `.${this.constructor.NAME}-arrow`\n }\n },\n {\n name: 'onChange',\n enabled: true,\n phase: 'afterWrite',\n fn: data => this._handlePopperPlacementChange(data)\n }\n ],\n onFirstUpdate: data => {\n if (data.options.placement !== data.placement) {\n this._handlePopperPlacementChange(data)\n }\n }\n }\n\n return {\n ...defaultBsConfig,\n ...this.config.popperConfig\n }\n }\n\n _addAttachmentClass(attachment) {\n this.getTipElement().classList.add(`${CLASS_PREFIX}-${this.updateAttachment(attachment)}`)\n }\n\n _getContainer() {\n if (this.config.container === false) {\n return document.body\n }\n\n if (isElement(this.config.container)) {\n return this.config.container\n }\n\n return SelectorEngine.findOne(this.config.container)\n }\n\n _getAttachment(placement) {\n return AttachmentMap[placement.toUpperCase()]\n }\n\n _setListeners() {\n const triggers = this.config.trigger.split(' ')\n\n triggers.forEach(trigger => {\n if (trigger === 'click') {\n EventHandler.on(this._element, this.constructor.Event.CLICK, this.config.selector, event => this.toggle(event)\n )\n } else if (trigger !== TRIGGER_MANUAL) {\n const eventIn = trigger === TRIGGER_HOVER ?\n this.constructor.Event.MOUSEENTER :\n this.constructor.Event.FOCUSIN\n const eventOut = trigger === TRIGGER_HOVER ?\n this.constructor.Event.MOUSELEAVE :\n this.constructor.Event.FOCUSOUT\n\n EventHandler.on(this._element, eventIn, this.config.selector, event => this._enter(event))\n EventHandler.on(this._element, eventOut, this.config.selector, event => this._leave(event))\n }\n })\n\n this._hideModalHandler = () => {\n if (this._element) {\n this.hide()\n }\n }\n\n EventHandler.on(this._element.closest(`.${CLASS_NAME_MODAL}`), 'hide.bs.modal', this._hideModalHandler)\n\n if (this.config.selector) {\n this.config = {\n ...this.config,\n trigger: 'manual',\n selector: ''\n }\n } else {\n this._fixTitle()\n }\n }\n\n _fixTitle() {\n const title = this._element.getAttribute('title')\n const originalTitleType = typeof this._element.getAttribute('data-bs-original-title')\n\n if (title || originalTitleType !== 'string') {\n this._element.setAttribute('data-bs-original-title', title || '')\n if (title && !this._element.getAttribute('aria-label') && !this._element.textContent) {\n this._element.setAttribute('aria-label', title)\n }\n\n this._element.setAttribute('title', '')\n }\n }\n\n _enter(event, context) {\n const dataKey = this.constructor.DATA_KEY\n context = context || Data.getData(event.delegateTarget, dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.delegateTarget,\n this._getDelegateConfig()\n )\n Data.setData(event.delegateTarget, dataKey, context)\n }\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER\n ] = true\n }\n\n if (context.getTipElement().classList.contains(CLASS_NAME_SHOW) || context._hoverState === HOVER_STATE_SHOW) {\n context._hoverState = HOVER_STATE_SHOW\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HOVER_STATE_SHOW\n\n if (!context.config.delay || !context.config.delay.show) {\n context.show()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HOVER_STATE_SHOW) {\n context.show()\n }\n }, context.config.delay.show)\n }\n\n _leave(event, context) {\n const dataKey = this.constructor.DATA_KEY\n context = context || Data.getData(event.delegateTarget, dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.delegateTarget,\n this._getDelegateConfig()\n )\n Data.setData(event.delegateTarget, dataKey, context)\n }\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER\n ] = false\n }\n\n if (context._isWithActiveTrigger()) {\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HOVER_STATE_OUT\n\n if (!context.config.delay || !context.config.delay.hide) {\n context.hide()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HOVER_STATE_OUT) {\n context.hide()\n }\n }, context.config.delay.hide)\n }\n\n _isWithActiveTrigger() {\n for (const trigger in this._activeTrigger) {\n if (this._activeTrigger[trigger]) {\n return true\n }\n }\n\n return false\n }\n\n _getConfig(config) {\n const dataAttributes = Manipulator.getDataAttributes(this._element)\n\n Object.keys(dataAttributes).forEach(dataAttr => {\n if (DISALLOWED_ATTRIBUTES.has(dataAttr)) {\n delete dataAttributes[dataAttr]\n }\n })\n\n if (config && typeof config.container === 'object' && config.container.jquery) {\n config.container = config.container[0]\n }\n\n config = {\n ...this.constructor.Default,\n ...dataAttributes,\n ...(typeof config === 'object' && config ? config : {})\n }\n\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n }\n }\n\n if (typeof config.title === 'number') {\n config.title = config.title.toString()\n }\n\n if (typeof config.content === 'number') {\n config.content = config.content.toString()\n }\n\n typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n if (config.sanitize) {\n config.template = sanitizeHtml(config.template, config.allowList, config.sanitizeFn)\n }\n\n return config\n }\n\n _getDelegateConfig() {\n const config = {}\n\n if (this.config) {\n for (const key in this.config) {\n if (this.constructor.Default[key] !== this.config[key]) {\n config[key] = this.config[key]\n }\n }\n }\n\n return config\n }\n\n _cleanTipClass() {\n const tip = this.getTipElement()\n const tabClass = tip.getAttribute('class').match(BSCLS_PREFIX_REGEX)\n if (tabClass !== null && tabClass.length > 0) {\n tabClass.map(token => token.trim())\n .forEach(tClass => tip.classList.remove(tClass))\n }\n }\n\n _handlePopperPlacementChange(popperData) {\n const { state } = popperData\n\n if (!state) {\n return\n }\n\n this.tip = state.elements.popper\n this._cleanTipClass()\n this._addAttachmentClass(this._getAttachment(state.placement))\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY)\n const _config = typeof config === 'object' && config\n\n if (!data && /dispose|hide/.test(config)) {\n return\n }\n\n if (!data) {\n data = new Tooltip(this, _config)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Tooltip to jQuery only if jQuery is present\n */\n\nonDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Tooltip.jQueryInterface\n $.fn[NAME].Constructor = Tooltip\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Tooltip.jQueryInterface\n }\n }\n})\n\nexport default Tooltip\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery, onDOMContentLoaded } from './util/index'\nimport Data from './dom/data'\nimport SelectorEngine from './dom/selector-engine'\nimport Tooltip from './tooltip'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'popover'\nconst DATA_KEY = 'bs.popover'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst CLASS_PREFIX = 'bs-popover'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\n\nconst Default = {\n ...Tooltip.Default,\n placement: 'right',\n trigger: 'click',\n content: '',\n template: '' +\n '' +\n '' +\n '' +\n ''\n}\n\nconst DefaultType = {\n ...Tooltip.DefaultType,\n content: '(string|element|function)'\n}\n\nconst Event = {\n HIDE: `hide${EVENT_KEY}`,\n HIDDEN: `hidden${EVENT_KEY}`,\n SHOW: `show${EVENT_KEY}`,\n SHOWN: `shown${EVENT_KEY}`,\n INSERTED: `inserted${EVENT_KEY}`,\n CLICK: `click${EVENT_KEY}`,\n FOCUSIN: `focusin${EVENT_KEY}`,\n FOCUSOUT: `focusout${EVENT_KEY}`,\n MOUSEENTER: `mouseenter${EVENT_KEY}`,\n MOUSELEAVE: `mouseleave${EVENT_KEY}`\n}\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Popover extends Tooltip {\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n static get Event() {\n return Event\n }\n\n static get EVENT_KEY() {\n return EVENT_KEY\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Overrides\n\n isWithContent() {\n return this.getTitle() || this._getContent()\n }\n\n setContent() {\n const tip = this.getTipElement()\n\n // we use append for html objects to maintain js events\n this.setElementContent(SelectorEngine.findOne(SELECTOR_TITLE, tip), this.getTitle())\n let content = this._getContent()\n if (typeof content === 'function') {\n content = content.call(this._element)\n }\n\n this.setElementContent(SelectorEngine.findOne(SELECTOR_CONTENT, tip), content)\n\n tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n }\n\n // Private\n\n _addAttachmentClass(attachment) {\n this.getTipElement().classList.add(`${CLASS_PREFIX}-${this.updateAttachment(attachment)}`)\n }\n\n _getContent() {\n return this._element.getAttribute('data-bs-content') || this.config.content\n }\n\n _cleanTipClass() {\n const tip = this.getTipElement()\n const tabClass = tip.getAttribute('class').match(BSCLS_PREFIX_REGEX)\n if (tabClass !== null && tabClass.length > 0) {\n tabClass.map(token => token.trim())\n .forEach(tClass => tip.classList.remove(tClass))\n }\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY)\n const _config = typeof config === 'object' ? config : null\n\n if (!data && /dispose|hide/.test(config)) {\n return\n }\n\n if (!data) {\n data = new Popover(this, _config)\n Data.setData(this, DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Popover to jQuery only if jQuery is present\n */\n\nonDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Popover.jQueryInterface\n $.fn[NAME].Constructor = Popover\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Popover.jQueryInterface\n }\n }\n})\n\nexport default Popover\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n getjQuery,\n onDOMContentLoaded,\n getSelectorFromElement,\n getUID,\n isElement,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'scrollspy'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst Default = {\n offset: 10,\n method: 'auto',\n target: ''\n}\n\nconst DefaultType = {\n offset: 'number',\n method: 'string',\n target: '(string|element)'\n}\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_SCROLL = `scroll${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_NAV_LINKS = '.nav-link'\nconst SELECTOR_NAV_ITEMS = '.nav-item'\nconst SELECTOR_LIST_ITEMS = '.list-group-item'\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\n\nconst METHOD_OFFSET = 'offset'\nconst METHOD_POSITION = 'position'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass ScrollSpy extends BaseComponent {\n constructor(element, config) {\n super(element)\n this._scrollElement = element.tagName === 'BODY' ? window : element\n this._config = this._getConfig(config)\n this._selector = `${this._config.target} ${SELECTOR_NAV_LINKS}, ${this._config.target} ${SELECTOR_LIST_ITEMS}, ${this._config.target} .${CLASS_NAME_DROPDOWN_ITEM}`\n this._offsets = []\n this._targets = []\n this._activeTarget = null\n this._scrollHeight = 0\n\n EventHandler.on(this._scrollElement, EVENT_SCROLL, event => this._process(event))\n\n this.refresh()\n this._process()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n refresh() {\n const autoMethod = this._scrollElement === this._scrollElement.window ?\n METHOD_OFFSET :\n METHOD_POSITION\n\n const offsetMethod = this._config.method === 'auto' ?\n autoMethod :\n this._config.method\n\n const offsetBase = offsetMethod === METHOD_POSITION ?\n this._getScrollTop() :\n 0\n\n this._offsets = []\n this._targets = []\n this._scrollHeight = this._getScrollHeight()\n\n const targets = SelectorEngine.find(this._selector)\n\n targets.map(element => {\n const targetSelector = getSelectorFromElement(element)\n const target = targetSelector ? SelectorEngine.findOne(targetSelector) : null\n\n if (target) {\n const targetBCR = target.getBoundingClientRect()\n if (targetBCR.width || targetBCR.height) {\n return [\n Manipulator[offsetMethod](target).top + offsetBase,\n targetSelector\n ]\n }\n }\n\n return null\n })\n .filter(item => item)\n .sort((a, b) => a[0] - b[0])\n .forEach(item => {\n this._offsets.push(item[0])\n this._targets.push(item[1])\n })\n }\n\n dispose() {\n super.dispose()\n EventHandler.off(this._scrollElement, EVENT_KEY)\n\n this._scrollElement = null\n this._config = null\n this._selector = null\n this._offsets = null\n this._targets = null\n this._activeTarget = null\n this._scrollHeight = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...(typeof config === 'object' && config ? config : {})\n }\n\n if (typeof config.target !== 'string' && isElement(config.target)) {\n let { id } = config.target\n if (!id) {\n id = getUID(NAME)\n config.target.id = id\n }\n\n config.target = `#${id}`\n }\n\n typeCheckConfig(NAME, config, DefaultType)\n\n return config\n }\n\n _getScrollTop() {\n return this._scrollElement === window ?\n this._scrollElement.pageYOffset :\n this._scrollElement.scrollTop\n }\n\n _getScrollHeight() {\n return this._scrollElement.scrollHeight || Math.max(\n document.body.scrollHeight,\n document.documentElement.scrollHeight\n )\n }\n\n _getOffsetHeight() {\n return this._scrollElement === window ?\n window.innerHeight :\n this._scrollElement.getBoundingClientRect().height\n }\n\n _process() {\n const scrollTop = this._getScrollTop() + this._config.offset\n const scrollHeight = this._getScrollHeight()\n const maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight()\n\n if (this._scrollHeight !== scrollHeight) {\n this.refresh()\n }\n\n if (scrollTop >= maxScroll) {\n const target = this._targets[this._targets.length - 1]\n\n if (this._activeTarget !== target) {\n this._activate(target)\n }\n\n return\n }\n\n if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n this._activeTarget = null\n this._clear()\n return\n }\n\n for (let i = this._offsets.length; i--;) {\n const isActiveTarget = this._activeTarget !== this._targets[i] &&\n scrollTop >= this._offsets[i] &&\n (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1])\n\n if (isActiveTarget) {\n this._activate(this._targets[i])\n }\n }\n }\n\n _activate(target) {\n this._activeTarget = target\n\n this._clear()\n\n const queries = this._selector.split(',')\n .map(selector => `${selector}[data-bs-target=\"${target}\"],${selector}[href=\"${target}\"]`)\n\n const link = SelectorEngine.findOne(queries.join(','))\n\n if (link.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE, link.closest(SELECTOR_DROPDOWN))\n .classList.add(CLASS_NAME_ACTIVE)\n\n link.classList.add(CLASS_NAME_ACTIVE)\n } else {\n // Set triggered link as active\n link.classList.add(CLASS_NAME_ACTIVE)\n\n SelectorEngine.parents(link, SELECTOR_NAV_LIST_GROUP)\n .forEach(listGroup => {\n // Set triggered links parents as active\n // With both and markup a parent is the previous sibling of any nav ancestor\n SelectorEngine.prev(listGroup, `${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`)\n .forEach(item => item.classList.add(CLASS_NAME_ACTIVE))\n\n // Handle special case when .nav-link is inside .nav-item\n SelectorEngine.prev(listGroup, SELECTOR_NAV_ITEMS)\n .forEach(navItem => {\n SelectorEngine.children(navItem, SELECTOR_NAV_LINKS)\n .forEach(item => item.classList.add(CLASS_NAME_ACTIVE))\n })\n })\n }\n\n EventHandler.trigger(this._scrollElement, EVENT_ACTIVATE, {\n relatedTarget: target\n })\n }\n\n _clear() {\n SelectorEngine.find(this._selector)\n .filter(node => node.classList.contains(CLASS_NAME_ACTIVE))\n .forEach(node => node.classList.remove(CLASS_NAME_ACTIVE))\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY)\n const _config = typeof config === 'object' && config\n\n if (!data) {\n data = new ScrollSpy(this, _config)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n SelectorEngine.find(SELECTOR_DATA_SPY)\n .forEach(spy => new ScrollSpy(spy, Manipulator.getDataAttributes(spy)))\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .ScrollSpy to jQuery only if jQuery is present\n */\n\nonDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = ScrollSpy.jQueryInterface\n $.fn[NAME].Constructor = ScrollSpy\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return ScrollSpy.jQueryInterface\n }\n }\n})\n\nexport default ScrollSpy\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n getjQuery,\n onDOMContentLoaded,\n TRANSITION_END,\n emulateTransitionEnd,\n getElementFromSelector,\n getTransitionDurationFromElement,\n reflow\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tab'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_DISABLED = 'disabled'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ACTIVE_UL = ':scope > li > .active'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\nconst SELECTOR_DROPDOWN_ACTIVE_CHILD = ':scope > .dropdown-menu .active'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tab extends BaseComponent {\n // Getters\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n show() {\n if ((this._element.parentNode &&\n this._element.parentNode.nodeType === Node.ELEMENT_NODE &&\n this._element.classList.contains(CLASS_NAME_ACTIVE)) ||\n this._element.classList.contains(CLASS_NAME_DISABLED)) {\n return\n }\n\n let previous\n const target = getElementFromSelector(this._element)\n const listElement = this._element.closest(SELECTOR_NAV_LIST_GROUP)\n\n if (listElement) {\n const itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE\n previous = SelectorEngine.find(itemSelector, listElement)\n previous = previous[previous.length - 1]\n }\n\n let hideEvent = null\n\n if (previous) {\n hideEvent = EventHandler.trigger(previous, EVENT_HIDE, {\n relatedTarget: this._element\n })\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n relatedTarget: previous\n })\n\n if (showEvent.defaultPrevented || (hideEvent !== null && hideEvent.defaultPrevented)) {\n return\n }\n\n this._activate(this._element, listElement)\n\n const complete = () => {\n EventHandler.trigger(previous, EVENT_HIDDEN, {\n relatedTarget: this._element\n })\n EventHandler.trigger(this._element, EVENT_SHOWN, {\n relatedTarget: previous\n })\n }\n\n if (target) {\n this._activate(target, target.parentNode, complete)\n } else {\n complete()\n }\n }\n\n // Private\n\n _activate(element, container, callback) {\n const activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ?\n SelectorEngine.find(SELECTOR_ACTIVE_UL, container) :\n SelectorEngine.children(container, SELECTOR_ACTIVE)\n\n const active = activeElements[0]\n const isTransitioning = callback && (active && active.classList.contains(CLASS_NAME_FADE))\n\n const complete = () => this._transitionComplete(element, active, callback)\n\n if (active && isTransitioning) {\n const transitionDuration = getTransitionDurationFromElement(active)\n active.classList.remove(CLASS_NAME_SHOW)\n\n EventHandler.one(active, TRANSITION_END, complete)\n emulateTransitionEnd(active, transitionDuration)\n } else {\n complete()\n }\n }\n\n _transitionComplete(element, active, callback) {\n if (active) {\n active.classList.remove(CLASS_NAME_ACTIVE)\n\n const dropdownChild = SelectorEngine.findOne(SELECTOR_DROPDOWN_ACTIVE_CHILD, active.parentNode)\n\n if (dropdownChild) {\n dropdownChild.classList.remove(CLASS_NAME_ACTIVE)\n }\n\n if (active.getAttribute('role') === 'tab') {\n active.setAttribute('aria-selected', false)\n }\n }\n\n element.classList.add(CLASS_NAME_ACTIVE)\n if (element.getAttribute('role') === 'tab') {\n element.setAttribute('aria-selected', true)\n }\n\n reflow(element)\n\n if (element.classList.contains(CLASS_NAME_FADE)) {\n element.classList.add(CLASS_NAME_SHOW)\n }\n\n if (element.parentNode && element.parentNode.classList.contains(CLASS_NAME_DROPDOWN_MENU)) {\n const dropdownElement = element.closest(SELECTOR_DROPDOWN)\n\n if (dropdownElement) {\n SelectorEngine.find(SELECTOR_DROPDOWN_TOGGLE)\n .forEach(dropdown => dropdown.classList.add(CLASS_NAME_ACTIVE))\n }\n\n element.setAttribute('aria-expanded', true)\n }\n\n if (callback) {\n callback()\n }\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Data.getData(this, DATA_KEY) || new Tab(this)\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n event.preventDefault()\n\n const data = Data.getData(this, DATA_KEY) || new Tab(this)\n data.show()\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Tab to jQuery only if jQuery is present\n */\n\nonDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Tab.jQueryInterface\n $.fn[NAME].Constructor = Tab\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Tab.jQueryInterface\n }\n }\n})\n\nexport default Tab\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n getjQuery,\n onDOMContentLoaded,\n TRANSITION_END,\n emulateTransitionEnd,\n getTransitionDurationFromElement,\n reflow,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'toast'\nconst DATA_KEY = 'bs.toast'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_HIDE = 'hide'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\n\nconst DefaultType = {\n animation: 'boolean',\n autohide: 'boolean',\n delay: 'number'\n}\n\nconst Default = {\n animation: true,\n autohide: true,\n delay: 5000\n}\n\nconst SELECTOR_DATA_DISMISS = '[data-bs-dismiss=\"toast\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Toast extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._config = this._getConfig(config)\n this._timeout = null\n this._setListeners()\n }\n\n // Getters\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get Default() {\n return Default\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n show() {\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n this._clearTimeout()\n\n if (this._config.animation) {\n this._element.classList.add(CLASS_NAME_FADE)\n }\n\n const complete = () => {\n this._element.classList.remove(CLASS_NAME_SHOWING)\n this._element.classList.add(CLASS_NAME_SHOW)\n\n EventHandler.trigger(this._element, EVENT_SHOWN)\n\n if (this._config.autohide) {\n this._timeout = setTimeout(() => {\n this.hide()\n }, this._config.delay)\n }\n }\n\n this._element.classList.remove(CLASS_NAME_HIDE)\n reflow(this._element)\n this._element.classList.add(CLASS_NAME_SHOWING)\n if (this._config.animation) {\n const transitionDuration = getTransitionDurationFromElement(this._element)\n\n EventHandler.one(this._element, TRANSITION_END, complete)\n emulateTransitionEnd(this._element, transitionDuration)\n } else {\n complete()\n }\n }\n\n hide() {\n if (!this._element.classList.contains(CLASS_NAME_SHOW)) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n const complete = () => {\n this._element.classList.add(CLASS_NAME_HIDE)\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n this._element.classList.remove(CLASS_NAME_SHOW)\n if (this._config.animation) {\n const transitionDuration = getTransitionDurationFromElement(this._element)\n\n EventHandler.one(this._element, TRANSITION_END, complete)\n emulateTransitionEnd(this._element, transitionDuration)\n } else {\n complete()\n }\n }\n\n dispose() {\n this._clearTimeout()\n\n if (this._element.classList.contains(CLASS_NAME_SHOW)) {\n this._element.classList.remove(CLASS_NAME_SHOW)\n }\n\n EventHandler.off(this._element, EVENT_CLICK_DISMISS)\n\n super.dispose()\n this._config = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...(typeof config === 'object' && config ? config : {})\n }\n\n typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n return config\n }\n\n _setListeners() {\n EventHandler.on(this._element, EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, () => this.hide())\n }\n\n _clearTimeout() {\n clearTimeout(this._timeout)\n this._timeout = null\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY)\n const _config = typeof config === 'object' && config\n\n if (!data) {\n data = new Toast(this, _config)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](this)\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Toast to jQuery only if jQuery is present\n */\n\nonDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Toast.jQueryInterface\n $.fn[NAME].Constructor = Toast\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Toast.jQueryInterface\n }\n }\n})\n\nexport default Toast\n"]} \ No newline at end of file diff --git a/dist/js/bootstrap.js b/dist/js/bootstrap.js index 7ff5c561f..e6a646d6d 100644 --- a/dist/js/bootstrap.js +++ b/dist/js/bootstrap.js @@ -1,643 +1,196 @@ /*! - * Bootstrap v5.0.0-beta1 (https://getbootstrap.com/) - * Copyright 2011-2020 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')) : - typeof define === 'function' && define.amd ? define(['@popperjs/core'], factory) : - (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.bootstrap = factory(global.Popper)); -}(this, (function (Popper) { 'use strict'; + * Bootstrap v4.0.0-alpha.2 (http://getbootstrap.com) + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ - function _interopNamespace(e) { - if (e && e.__esModule) return e; - var n = Object.create(null); - if (e) { - Object.keys(e).forEach(function (k) { - if (k !== 'default') { - var d = Object.getOwnPropertyDescriptor(e, k); - Object.defineProperty(n, k, d.get ? d : { - enumerable: true, - get: function () { - return e[k]; - } - }); - } - }); - } - n['default'] = e; - return Object.freeze(n); +if (typeof jQuery === 'undefined') { + throw new Error('Bootstrap\'s JavaScript requires jQuery') +} + ++function ($) { + var version = $.fn.jquery.split(' ')[0].split('.') + if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] >= 3)) { + throw new Error('Bootstrap\'s JavaScript requires at least jQuery v1.9.1 but less than v3.0.0') } +}(jQuery); - var Popper__namespace = /*#__PURE__*/_interopNamespace(Popper); - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } ++function ($) { - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; - } +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0-alpha.2): util.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ - function _extends() { - _extends = Object.assign || function (target) { - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i]; +'use strict'; - for (var key in source) { - if (Object.prototype.hasOwnProperty.call(source, key)) { - target[key] = source[key]; - } - } - } +var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; - return target; - }; +var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); - return _extends.apply(this, arguments); - } +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - function _inheritsLoose(subClass, superClass) { - subClass.prototype = Object.create(superClass.prototype); - subClass.prototype.constructor = subClass; - subClass.__proto__ = superClass; - } +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +var Util = (function ($) { /** - * -------------------------------------------------------------------------- - * Bootstrap (v5.0.0-beta1): util/index.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- + * ------------------------------------------------------------------------ + * Private TransitionEnd Helpers + * ------------------------------------------------------------------------ */ - var MAX_UID = 1000000; - var MILLISECONDS_MULTIPLIER = 1000; - var TRANSITION_END = 'transitionend'; // Shoutout AngusCroll (https://goo.gl/pxwQGp) - var toType = function toType(obj) { - if (obj === null || obj === undefined) { - return "" + obj; + var transition = false; + + var TransitionEndEvent = { + WebkitTransition: 'webkitTransitionEnd', + MozTransition: 'transitionend', + OTransition: 'oTransitionEnd otransitionend', + transition: 'transitionend' + }; + + // shoutout AngusCroll (https://goo.gl/pxwQGp) + function toType(obj) { + return ({}).toString.call(obj).match(/\s([a-zA-Z]+)/)[1].toLowerCase(); + } + + function isElement(obj) { + return (obj[0] || obj).nodeType; + } + + function getSpecialTransitionEndEvent() { + return { + bindType: transition.end, + delegateType: transition.end, + handle: function handle(event) { + if ($(event.target).is(this)) { + return event.handleObj.handler.apply(this, arguments); + } + } + }; + } + + function transitionEndTest() { + if (window.QUnit) { + return false; } - return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase(); - }; + var el = document.createElement('bootstrap'); + + for (var _name in TransitionEndEvent) { + if (el.style[_name] !== undefined) { + return { end: TransitionEndEvent[_name] }; + } + } + + return false; + } + + function transitionEndEmulator(duration) { + var _this = this; + + var called = false; + + $(this).one(Util.TRANSITION_END, function () { + called = true; + }); + + setTimeout(function () { + if (!called) { + Util.triggerTransitionEnd(_this); + } + }, duration); + + return this; + } + + function setTransitionEndSupport() { + transition = transitionEndTest(); + + $.fn.emulateTransitionEnd = transitionEndEmulator; + + if (Util.supportsTransitionEnd()) { + $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent(); + } + } + /** * -------------------------------------------------------------------------- * Public Util Api * -------------------------------------------------------------------------- */ + var Util = { - var getUID = function getUID(prefix) { - do { - prefix += Math.floor(Math.random() * MAX_UID); - } while (document.getElementById(prefix)); + TRANSITION_END: 'bsTransitionEnd', - return prefix; - }; - - var getSelector = function getSelector(element) { - var selector = element.getAttribute('data-bs-target'); - - if (!selector || selector === '#') { - var hrefAttr = element.getAttribute('href'); - selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null; - } - - return selector; - }; - - var getSelectorFromElement = function getSelectorFromElement(element) { - var selector = getSelector(element); - - if (selector) { - return document.querySelector(selector) ? selector : null; - } - - return null; - }; - - var getElementFromSelector = function getElementFromSelector(element) { - var selector = getSelector(element); - return selector ? document.querySelector(selector) : null; - }; - - var getTransitionDurationFromElement = function getTransitionDurationFromElement(element) { - if (!element) { - return 0; - } // Get transition-duration of the element - - - var _window$getComputedSt = window.getComputedStyle(element), - transitionDuration = _window$getComputedSt.transitionDuration, - transitionDelay = _window$getComputedSt.transitionDelay; - - var floatTransitionDuration = Number.parseFloat(transitionDuration); - var floatTransitionDelay = Number.parseFloat(transitionDelay); // Return 0 if element or transition duration is not found - - if (!floatTransitionDuration && !floatTransitionDelay) { - return 0; - } // If multiple durations are defined, take the first - - - transitionDuration = transitionDuration.split(',')[0]; - transitionDelay = transitionDelay.split(',')[0]; - return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER; - }; - - var triggerTransitionEnd = function triggerTransitionEnd(element) { - element.dispatchEvent(new Event(TRANSITION_END)); - }; - - var isElement = function isElement(obj) { - return (obj[0] || obj).nodeType; - }; - - var emulateTransitionEnd = function emulateTransitionEnd(element, duration) { - var called = false; - var durationPadding = 5; - var emulatedDuration = duration + durationPadding; - - function listener() { - called = true; - element.removeEventListener(TRANSITION_END, listener); - } - - element.addEventListener(TRANSITION_END, listener); - setTimeout(function () { - if (!called) { - triggerTransitionEnd(element); - } - }, emulatedDuration); - }; - - var typeCheckConfig = function typeCheckConfig(componentName, config, configTypes) { - Object.keys(configTypes).forEach(function (property) { - var expectedTypes = configTypes[property]; - var value = config[property]; - var valueType = value && isElement(value) ? 'element' : toType(value); - - if (!new RegExp(expectedTypes).test(valueType)) { - throw new Error(componentName.toUpperCase() + ": " + ("Option \"" + property + "\" provided type \"" + valueType + "\" ") + ("but expected type \"" + expectedTypes + "\".")); - } - }); - }; - - var isVisible = function isVisible(element) { - if (!element) { - return false; - } - - if (element.style && element.parentNode && element.parentNode.style) { - var elementStyle = getComputedStyle(element); - var parentNodeStyle = getComputedStyle(element.parentNode); - return elementStyle.display !== 'none' && parentNodeStyle.display !== 'none' && elementStyle.visibility !== 'hidden'; - } - - return false; - }; - - var findShadowRoot = function findShadowRoot(element) { - if (!document.documentElement.attachShadow) { - return null; - } // Can find the shadow root otherwise it'll return the document - - - if (typeof element.getRootNode === 'function') { - var root = element.getRootNode(); - return root instanceof ShadowRoot ? root : null; - } - - if (element instanceof ShadowRoot) { - return element; - } // when we don't find a shadow root - - - if (!element.parentNode) { - return null; - } - - return findShadowRoot(element.parentNode); - }; - - var noop = function noop() { - return function () {}; - }; - - var reflow = function reflow(element) { - return element.offsetHeight; - }; - - var getjQuery = function getjQuery() { - var _window = window, - jQuery = _window.jQuery; - - if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) { - return jQuery; - } - - return null; - }; - - var onDOMContentLoaded = function onDOMContentLoaded(callback) { - if (document.readyState === 'loading') { - document.addEventListener('DOMContentLoaded', callback); - } else { - callback(); - } - }; - - var isRTL = document.documentElement.dir === 'rtl'; - - /** - * -------------------------------------------------------------------------- - * Bootstrap (v5.0.0-beta1): dom/data.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ - - /** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - var mapData = function () { - var storeData = {}; - var id = 1; - return { - set: function set(element, key, data) { - if (typeof element.bsKey === 'undefined') { - element.bsKey = { - key: key, - id: id - }; - id++; - } - - storeData[element.bsKey.id] = data; - }, - get: function get(element, key) { - if (!element || typeof element.bsKey === 'undefined') { - return null; - } - - var keyProperties = element.bsKey; - - if (keyProperties.key === key) { - return storeData[keyProperties.id]; - } - - return null; - }, - delete: function _delete(element, key) { - if (typeof element.bsKey === 'undefined') { - return; - } - - var keyProperties = element.bsKey; - - if (keyProperties.key === key) { - delete storeData[keyProperties.id]; - delete element.bsKey; - } - } - }; - }(); - - var Data = { - setData: function setData(instance, key, data) { - mapData.set(instance, key, data); + getUID: function getUID(prefix) { + do { + prefix += ~ ~(Math.random() * 1000000); // "~~" acts like a faster Math.floor() here + } while (document.getElementById(prefix)); + return prefix; }, - getData: function getData(instance, key) { - return mapData.get(instance, key); - }, - removeData: function removeData(instance, key) { - mapData.delete(instance, key); - } - }; - /** - * -------------------------------------------------------------------------- - * Bootstrap (v5.0.0-beta1): dom/event-handler.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ - /** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ + getSelectorFromElement: function getSelectorFromElement(element) { + var selector = element.getAttribute('data-target'); - var namespaceRegex = /[^.]*(?=\..*)\.|.*/; - var stripNameRegex = /\..*/; - var stripUidRegex = /::\d+$/; - var eventRegistry = {}; // Events storage - - var uidEvent = 1; - var customEvents = { - mouseenter: 'mouseover', - mouseleave: 'mouseout' - }; - var nativeEvents = new Set(['click', 'dblclick', 'mouseup', 'mousedown', 'contextmenu', 'mousewheel', 'DOMMouseScroll', 'mouseover', 'mouseout', 'mousemove', 'selectstart', 'selectend', 'keydown', 'keypress', 'keyup', 'orientationchange', 'touchstart', 'touchmove', 'touchend', 'touchcancel', 'pointerdown', 'pointermove', 'pointerup', 'pointerleave', 'pointercancel', 'gesturestart', 'gesturechange', 'gestureend', 'focus', 'blur', 'change', 'reset', 'select', 'submit', 'focusin', 'focusout', 'load', 'unload', 'beforeunload', 'resize', 'move', 'DOMContentLoaded', 'readystatechange', 'error', 'abort', 'scroll']); - /** - * ------------------------------------------------------------------------ - * Private methods - * ------------------------------------------------------------------------ - */ - - function getUidEvent(element, uid) { - return uid && uid + "::" + uidEvent++ || element.uidEvent || uidEvent++; - } - - function getEvent(element) { - var uid = getUidEvent(element); - element.uidEvent = uid; - eventRegistry[uid] = eventRegistry[uid] || {}; - return eventRegistry[uid]; - } - - function bootstrapHandler(element, fn) { - return function handler(event) { - event.delegateTarget = element; - - if (handler.oneOff) { - EventHandler.off(element, event.type, fn); + if (!selector) { + selector = element.getAttribute('href') || ''; + selector = /^#[a-z]/i.test(selector) ? selector : null; } - return fn.apply(element, [event]); - }; - } + return selector; + }, - function bootstrapDelegationHandler(element, selector, fn) { - return function handler(event) { - var domElements = element.querySelectorAll(selector); + reflow: function reflow(element) { + new Function('bs', 'return bs')(element.offsetHeight); + }, - for (var target = event.target; target && target !== this; target = target.parentNode) { - for (var i = domElements.length; i--;) { - if (domElements[i] === target) { - event.delegateTarget = target; + triggerTransitionEnd: function triggerTransitionEnd(element) { + $(element).trigger(transition.end); + }, - if (handler.oneOff) { - EventHandler.off(element, event.type, fn); - } + supportsTransitionEnd: function supportsTransitionEnd() { + return Boolean(transition); + }, - return fn.apply(target, [event]); + typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) { + for (var property in configTypes) { + if (configTypes.hasOwnProperty(property)) { + var expectedTypes = configTypes[property]; + var value = config[property]; + var valueType = undefined; + + if (value && isElement(value)) { + valueType = 'element'; + } else { + valueType = toType(value); + } + + if (!new RegExp(expectedTypes).test(valueType)) { + throw new Error(componentName.toUpperCase() + ': ' + ('Option "' + property + '" provided type "' + valueType + '" ') + ('but expected type "' + expectedTypes + '".')); } } - } // To please ESLint - - - return null; - }; - } - - function findHandler(events, handler, delegationSelector) { - if (delegationSelector === void 0) { - delegationSelector = null; - } - - var uidEventList = Object.keys(events); - - for (var i = 0, len = uidEventList.length; i < len; i++) { - var event = events[uidEventList[i]]; - - if (event.originalHandler === handler && event.delegationSelector === delegationSelector) { - return event; } } - - return null; - } - - function normalizeParams(originalTypeEvent, handler, delegationFn) { - var delegation = typeof handler === 'string'; - var originalHandler = delegation ? delegationFn : handler; // allow to get the native events from namespaced events ('click.bs.button' --> 'click') - - var typeEvent = originalTypeEvent.replace(stripNameRegex, ''); - var custom = customEvents[typeEvent]; - - if (custom) { - typeEvent = custom; - } - - var isNative = nativeEvents.has(typeEvent); - - if (!isNative) { - typeEvent = originalTypeEvent; - } - - return [delegation, originalHandler, typeEvent]; - } - - function addHandler(element, originalTypeEvent, handler, delegationFn, oneOff) { - if (typeof originalTypeEvent !== 'string' || !element) { - return; - } - - if (!handler) { - handler = delegationFn; - delegationFn = null; - } - - var _normalizeParams = normalizeParams(originalTypeEvent, handler, delegationFn), - delegation = _normalizeParams[0], - originalHandler = _normalizeParams[1], - typeEvent = _normalizeParams[2]; - - var events = getEvent(element); - var handlers = events[typeEvent] || (events[typeEvent] = {}); - var previousFn = findHandler(handlers, originalHandler, delegation ? handler : null); - - if (previousFn) { - previousFn.oneOff = previousFn.oneOff && oneOff; - return; - } - - var uid = getUidEvent(originalHandler, originalTypeEvent.replace(namespaceRegex, '')); - var fn = delegation ? bootstrapDelegationHandler(element, handler, delegationFn) : bootstrapHandler(element, handler); - fn.delegationSelector = delegation ? handler : null; - fn.originalHandler = originalHandler; - fn.oneOff = oneOff; - fn.uidEvent = uid; - handlers[uid] = fn; - element.addEventListener(typeEvent, fn, delegation); - } - - function removeHandler(element, events, typeEvent, handler, delegationSelector) { - var 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) { - var storeElementEvent = events[typeEvent] || {}; - Object.keys(storeElementEvent).forEach(function (handlerKey) { - if (handlerKey.includes(namespace)) { - var event = storeElementEvent[handlerKey]; - removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector); - } - }); - } - - var EventHandler = { - on: function on(element, event, handler, delegationFn) { - addHandler(element, event, handler, delegationFn, false); - }, - one: function one(element, event, handler, delegationFn) { - addHandler(element, event, handler, delegationFn, true); - }, - off: function off(element, originalTypeEvent, handler, delegationFn) { - if (typeof originalTypeEvent !== 'string' || !element) { - return; - } - - var _normalizeParams2 = normalizeParams(originalTypeEvent, handler, delegationFn), - delegation = _normalizeParams2[0], - originalHandler = _normalizeParams2[1], - typeEvent = _normalizeParams2[2]; - - var inNamespace = typeEvent !== originalTypeEvent; - var events = getEvent(element); - var isNamespace = originalTypeEvent.startsWith('.'); - - if (typeof originalHandler !== 'undefined') { - // Simplest case: handler is passed, remove that listener ONLY. - if (!events || !events[typeEvent]) { - return; - } - - removeHandler(element, events, typeEvent, originalHandler, delegation ? handler : null); - return; - } - - if (isNamespace) { - Object.keys(events).forEach(function (elementEvent) { - removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1)); - }); - } - - var storeElementEvent = events[typeEvent] || {}; - Object.keys(storeElementEvent).forEach(function (keyHandlers) { - var handlerKey = keyHandlers.replace(stripUidRegex, ''); - - if (!inNamespace || originalTypeEvent.includes(handlerKey)) { - var event = storeElementEvent[keyHandlers]; - removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector); - } - }); - }, - trigger: function trigger(element, event, args) { - if (typeof event !== 'string' || !element) { - return null; - } - - var $ = getjQuery(); - var typeEvent = event.replace(stripNameRegex, ''); - var inNamespace = event !== typeEvent; - var isNative = nativeEvents.has(typeEvent); - var jQueryEvent; - var bubbles = true; - var nativeDispatch = true; - var defaultPrevented = false; - var evt = null; - - if (inNamespace && $) { - jQueryEvent = $.Event(event, args); - $(element).trigger(jQueryEvent); - bubbles = !jQueryEvent.isPropagationStopped(); - nativeDispatch = !jQueryEvent.isImmediatePropagationStopped(); - defaultPrevented = jQueryEvent.isDefaultPrevented(); - } - - if (isNative) { - evt = document.createEvent('HTMLEvents'); - evt.initEvent(typeEvent, bubbles, true); - } else { - evt = new CustomEvent(event, { - bubbles: bubbles, - cancelable: true - }); - } // merge custom information in our event - - - if (typeof args !== 'undefined') { - Object.keys(args).forEach(function (key) { - Object.defineProperty(evt, key, { - get: function get() { - return args[key]; - } - }); - }); - } - - if (defaultPrevented) { - evt.preventDefault(); - } - - if (nativeDispatch) { - element.dispatchEvent(evt); - } - - if (evt.defaultPrevented && typeof jQueryEvent !== 'undefined') { - jQueryEvent.preventDefault(); - } - - return evt; - } }; - /** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ + setTransitionEndSupport(); - var VERSION = '5.0.0-beta1'; + return Util; +})(jQuery); - var BaseComponent = /*#__PURE__*/function () { - function BaseComponent(element) { - if (!element) { - return; - } +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0-alpha.2): alert.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ - this._element = element; - Data.setData(element, this.constructor.DATA_KEY, this); - } - - var _proto = BaseComponent.prototype; - - _proto.dispose = function dispose() { - Data.removeData(this._element, this.constructor.DATA_KEY); - this._element = null; - } - /** Static */ - ; - - BaseComponent.getInstance = function getInstance(element) { - return Data.getData(element, this.DATA_KEY); - }; - - _createClass(BaseComponent, null, [{ - key: "VERSION", - get: function get() { - return VERSION; - } - }]); - - return BaseComponent; - }(); +var Alert = (function ($) { /** * ------------------------------------------------------------------------ @@ -646,144 +199,184 @@ */ var NAME = 'alert'; + var VERSION = '4.0.0-alpha'; var DATA_KEY = 'bs.alert'; - var EVENT_KEY = "." + DATA_KEY; + var EVENT_KEY = '.' + DATA_KEY; var DATA_API_KEY = '.data-api'; - var SELECTOR_DISMISS = '[data-bs-dismiss="alert"]'; - var EVENT_CLOSE = "close" + EVENT_KEY; - var EVENT_CLOSED = "closed" + EVENT_KEY; - var EVENT_CLICK_DATA_API = "click" + EVENT_KEY + DATA_API_KEY; - var CLASSNAME_ALERT = 'alert'; - var CLASSNAME_FADE = 'fade'; - var CLASSNAME_SHOW = 'show'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + var TRANSITION_DURATION = 150; + + var Selector = { + DISMISS: '[data-dismiss="alert"]' + }; + + var Event = { + CLOSE: 'close' + EVENT_KEY, + CLOSED: 'closed' + EVENT_KEY, + CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY + }; + + var ClassName = { + ALERT: 'alert', + FADE: 'fade', + IN: 'in' + }; + /** * ------------------------------------------------------------------------ * Class Definition * ------------------------------------------------------------------------ */ - var Alert = /*#__PURE__*/function (_BaseComponent) { - _inheritsLoose(Alert, _BaseComponent); + var Alert = (function () { + function Alert(element) { + _classCallCheck(this, Alert); - function Alert() { - return _BaseComponent.apply(this, arguments) || this; + this._element = element; } - var _proto = Alert.prototype; + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ - // Public - _proto.close = function close(element) { - var rootElement = element ? this._getRootElement(element) : this._element; + // getters - var customEvent = this._triggerCloseEvent(rootElement); + _createClass(Alert, [{ + key: 'close', - if (customEvent === null || customEvent.defaultPrevented) { - return; - } + // public - this._removeElement(rootElement); - } // Private - ; + value: function close(element) { + element = element || this._element; - _proto._getRootElement = function _getRootElement(element) { - return getElementFromSelector(element) || element.closest("." + CLASSNAME_ALERT); - }; + var rootElement = this._getRootElement(element); + var customEvent = this._triggerCloseEvent(rootElement); - _proto._triggerCloseEvent = function _triggerCloseEvent(element) { - return EventHandler.trigger(element, EVENT_CLOSE); - }; - - _proto._removeElement = function _removeElement(element) { - var _this = this; - - element.classList.remove(CLASSNAME_SHOW); - - if (!element.classList.contains(CLASSNAME_FADE)) { - this._destroyElement(element); - - return; - } - - var transitionDuration = getTransitionDurationFromElement(element); - EventHandler.one(element, TRANSITION_END, function () { - return _this._destroyElement(element); - }); - emulateTransitionEnd(element, transitionDuration); - }; - - _proto._destroyElement = function _destroyElement(element) { - if (element.parentNode) { - element.parentNode.removeChild(element); - } - - EventHandler.trigger(element, EVENT_CLOSED); - } // Static - ; - - Alert.jQueryInterface = function jQueryInterface(config) { - return this.each(function () { - var data = Data.getData(this, DATA_KEY); - - if (!data) { - data = new Alert(this); + if (customEvent.isDefaultPrevented()) { + return; } - if (config === 'close') { - data[config](this); - } - }); - }; + this._removeElement(rootElement); + } + }, { + key: 'dispose', + value: function dispose() { + $.removeData(this._element, DATA_KEY); + this._element = null; + } - Alert.handleDismiss = function handleDismiss(alertInstance) { - return function (event) { - if (event) { - event.preventDefault(); + // private + + }, { + key: '_getRootElement', + value: function _getRootElement(element) { + var selector = Util.getSelectorFromElement(element); + var parent = false; + + if (selector) { + parent = $(selector)[0]; } - alertInstance.close(this); - }; - }; + if (!parent) { + parent = $(element).closest('.' + ClassName.ALERT)[0]; + } - _createClass(Alert, null, [{ - key: "DATA_KEY", - // Getters + return parent; + } + }, { + key: '_triggerCloseEvent', + value: function _triggerCloseEvent(element) { + var closeEvent = $.Event(Event.CLOSE); + + $(element).trigger(closeEvent); + return closeEvent; + } + }, { + key: '_removeElement', + value: function _removeElement(element) { + $(element).removeClass(ClassName.IN); + + if (!Util.supportsTransitionEnd() || !$(element).hasClass(ClassName.FADE)) { + this._destroyElement(element); + return; + } + + $(element).one(Util.TRANSITION_END, $.proxy(this._destroyElement, this, element)).emulateTransitionEnd(TRANSITION_DURATION); + } + }, { + key: '_destroyElement', + value: function _destroyElement(element) { + $(element).detach().trigger(Event.CLOSED).remove(); + } + + // static + + }], [{ + key: '_jQueryInterface', + value: function _jQueryInterface(config) { + return this.each(function () { + var $element = $(this); + var data = $element.data(DATA_KEY); + + if (!data) { + data = new Alert(this); + $element.data(DATA_KEY, data); + } + + if (config === 'close') { + data[config](this); + } + }); + } + }, { + key: '_handleDismiss', + value: function _handleDismiss(alertInstance) { + return function (event) { + if (event) { + event.preventDefault(); + } + + alertInstance.close(this); + }; + } + }, { + key: 'VERSION', get: function get() { - return DATA_KEY; + return VERSION; } }]); return Alert; - }(BaseComponent); - /** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ + })(); + $(document).on(Event.CLICK_DATA_API, Selector.DISMISS, Alert._handleDismiss(new Alert())); - EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DISMISS, Alert.handleDismiss(new Alert())); /** * ------------------------------------------------------------------------ * jQuery * ------------------------------------------------------------------------ - * add .Alert to jQuery only if jQuery is present */ - onDOMContentLoaded(function () { - var $ = getjQuery(); - /* istanbul ignore if */ + $.fn[NAME] = Alert._jQueryInterface; + $.fn[NAME].Constructor = Alert; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Alert._jQueryInterface; + }; - if ($) { - var JQUERY_NO_CONFLICT = $.fn[NAME]; - $.fn[NAME] = Alert.jQueryInterface; - $.fn[NAME].Constructor = Alert; + return Alert; +})(jQuery); - $.fn[NAME].noConflict = function () { - $.fn[NAME] = JQUERY_NO_CONFLICT; - return Alert.jQueryInterface; - }; - } - }); +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0-alpha.2): button.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +var Button = (function ($) { /** * ------------------------------------------------------------------------ @@ -791,255 +384,165 @@ * ------------------------------------------------------------------------ */ - var NAME$1 = 'button'; - var DATA_KEY$1 = 'bs.button'; - var EVENT_KEY$1 = "." + DATA_KEY$1; - var DATA_API_KEY$1 = '.data-api'; - var CLASS_NAME_ACTIVE = 'active'; - var SELECTOR_DATA_TOGGLE = '[data-bs-toggle="button"]'; - var EVENT_CLICK_DATA_API$1 = "click" + EVENT_KEY$1 + DATA_API_KEY$1; + var NAME = 'button'; + var VERSION = '4.0.0-alpha'; + var DATA_KEY = 'bs.button'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + + var ClassName = { + ACTIVE: 'active', + BUTTON: 'btn', + FOCUS: 'focus' + }; + + var Selector = { + DATA_TOGGLE_CARROT: '[data-toggle^="button"]', + DATA_TOGGLE: '[data-toggle="buttons"]', + INPUT: 'input', + ACTIVE: '.active', + BUTTON: '.btn' + }; + + var Event = { + CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY, + FOCUS_BLUR_DATA_API: 'focus' + EVENT_KEY + DATA_API_KEY + ' ' + ('blur' + EVENT_KEY + DATA_API_KEY) + }; + /** * ------------------------------------------------------------------------ * Class Definition * ------------------------------------------------------------------------ */ - var Button = /*#__PURE__*/function (_BaseComponent) { - _inheritsLoose(Button, _BaseComponent); + var Button = (function () { + function Button(element) { + _classCallCheck(this, Button); - function Button() { - return _BaseComponent.apply(this, arguments) || this; + this._element = element; } - var _proto = Button.prototype; + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ - // Public - _proto.toggle = function toggle() { - // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method - this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE)); - } // Static - ; + // getters - Button.jQueryInterface = function jQueryInterface(config) { - return this.each(function () { - var data = Data.getData(this, DATA_KEY$1); + _createClass(Button, [{ + key: 'toggle', - if (!data) { - data = new Button(this); + // public + + value: function toggle() { + var triggerChangeEvent = true; + var rootElement = $(this._element).closest(Selector.DATA_TOGGLE)[0]; + + if (rootElement) { + var input = $(this._element).find(Selector.INPUT)[0]; + + if (input) { + if (input.type === 'radio') { + if (input.checked && $(this._element).hasClass(ClassName.ACTIVE)) { + triggerChangeEvent = false; + } else { + var activeElement = $(rootElement).find(Selector.ACTIVE)[0]; + + if (activeElement) { + $(activeElement).removeClass(ClassName.ACTIVE); + } + } + } + + if (triggerChangeEvent) { + input.checked = !$(this._element).hasClass(ClassName.ACTIVE); + $(this._element).trigger('change'); + } + } + } else { + this._element.setAttribute('aria-pressed', !$(this._element).hasClass(ClassName.ACTIVE)); } - if (config === 'toggle') { - data[config](); + if (triggerChangeEvent) { + $(this._element).toggleClass(ClassName.ACTIVE); } - }); - }; + } + }, { + key: 'dispose', + value: function dispose() { + $.removeData(this._element, DATA_KEY); + this._element = null; + } - _createClass(Button, null, [{ - key: "DATA_KEY", - // Getters + // static + + }], [{ + key: '_jQueryInterface', + value: function _jQueryInterface(config) { + return this.each(function () { + var data = $(this).data(DATA_KEY); + + if (!data) { + data = new Button(this); + $(this).data(DATA_KEY, data); + } + + if (config === 'toggle') { + data[config](); + } + }); + } + }, { + key: 'VERSION', get: function get() { - return DATA_KEY$1; + return VERSION; } }]); return Button; - }(BaseComponent); - /** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ + })(); - - EventHandler.on(document, EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE, function (event) { + $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) { event.preventDefault(); - var button = event.target.closest(SELECTOR_DATA_TOGGLE); - var data = Data.getData(button, DATA_KEY$1); - if (!data) { - data = new Button(button); + var button = event.target; + + if (!$(button).hasClass(ClassName.BUTTON)) { + button = $(button).closest(Selector.BUTTON); } - data.toggle(); + Button._jQueryInterface.call($(button), 'toggle'); + }).on(Event.FOCUS_BLUR_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) { + var button = $(event.target).closest(Selector.BUTTON)[0]; + $(button).toggleClass(ClassName.FOCUS, /^focus(in)?$/.test(event.type)); }); + /** * ------------------------------------------------------------------------ * jQuery * ------------------------------------------------------------------------ - * add .Button to jQuery only if jQuery is present */ - onDOMContentLoaded(function () { - var $ = getjQuery(); - /* istanbul ignore if */ - - if ($) { - var JQUERY_NO_CONFLICT = $.fn[NAME$1]; - $.fn[NAME$1] = Button.jQueryInterface; - $.fn[NAME$1].Constructor = Button; - - $.fn[NAME$1].noConflict = function () { - $.fn[NAME$1] = JQUERY_NO_CONFLICT; - return Button.jQueryInterface; - }; - } - }); - - /** - * -------------------------------------------------------------------------- - * Bootstrap (v5.0.0-beta1): dom/manipulator.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ - function normalizeData(val) { - if (val === 'true') { - return true; - } - - if (val === 'false') { - return false; - } - - if (val === Number(val).toString()) { - return Number(val); - } - - if (val === '' || val === 'null') { - return null; - } - - return val; - } - - function normalizeDataKey(key) { - return key.replace(/[A-Z]/g, function (chr) { - return "-" + chr.toLowerCase(); - }); - } - - var Manipulator = { - setDataAttribute: function setDataAttribute(element, key, value) { - element.setAttribute("data-bs-" + normalizeDataKey(key), value); - }, - removeDataAttribute: function removeDataAttribute(element, key) { - element.removeAttribute("data-bs-" + normalizeDataKey(key)); - }, - getDataAttributes: function getDataAttributes(element) { - if (!element) { - return {}; - } - - var attributes = {}; - Object.keys(element.dataset).filter(function (key) { - return key.startsWith('bs'); - }).forEach(function (key) { - var pureKey = key.replace(/^bs/, ''); - pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length); - attributes[pureKey] = normalizeData(element.dataset[key]); - }); - return attributes; - }, - getDataAttribute: function getDataAttribute(element, key) { - return normalizeData(element.getAttribute("data-bs-" + normalizeDataKey(key))); - }, - offset: function offset(element) { - var rect = element.getBoundingClientRect(); - return { - top: rect.top + document.body.scrollTop, - left: rect.left + document.body.scrollLeft - }; - }, - position: function position(element) { - return { - top: element.offsetTop, - left: element.offsetLeft - }; - } + $.fn[NAME] = Button._jQueryInterface; + $.fn[NAME].Constructor = Button; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Button._jQueryInterface; }; - /** - * -------------------------------------------------------------------------- - * Bootstrap (v5.0.0-beta1): dom/selector-engine.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ + return Button; +})(jQuery); - /** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - var NODE_TEXT = 3; - var SelectorEngine = { - matches: function matches(element, selector) { - return element.matches(selector); - }, - find: function find(selector, element) { - var _ref; +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0-alpha.2): carousel.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ - if (element === void 0) { - element = document.documentElement; - } - - return (_ref = []).concat.apply(_ref, Element.prototype.querySelectorAll.call(element, selector)); - }, - findOne: function findOne(selector, element) { - if (element === void 0) { - element = document.documentElement; - } - - return Element.prototype.querySelector.call(element, selector); - }, - children: function children(element, selector) { - var _ref2; - - var children = (_ref2 = []).concat.apply(_ref2, element.children); - - return children.filter(function (child) { - return child.matches(selector); - }); - }, - parents: function parents(element, selector) { - var parents = []; - var ancestor = element.parentNode; - - while (ancestor && ancestor.nodeType === Node.ELEMENT_NODE && ancestor.nodeType !== NODE_TEXT) { - if (this.matches(ancestor, selector)) { - parents.push(ancestor); - } - - ancestor = ancestor.parentNode; - } - - return parents; - }, - prev: function prev(element, selector) { - var previous = element.previousElementSibling; - - while (previous) { - if (previous.matches(selector)) { - return [previous]; - } - - previous = previous.previousElementSibling; - } - - return []; - }, - next: function next(element, selector) { - var next = element.nextElementSibling; - - while (next) { - if (this.matches(next, selector)) { - return [next]; - } - - next = next.nextElementSibling; - } - - return []; - } - }; +var Carousel = (function ($) { /** * ------------------------------------------------------------------------ @@ -1047,609 +550,471 @@ * ------------------------------------------------------------------------ */ - var NAME$2 = 'carousel'; - var DATA_KEY$2 = 'bs.carousel'; - var EVENT_KEY$2 = "." + DATA_KEY$2; - var DATA_API_KEY$2 = '.data-api'; - var ARROW_LEFT_KEY = 'ArrowLeft'; - var ARROW_RIGHT_KEY = 'ArrowRight'; - var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch + var NAME = 'carousel'; + var VERSION = '4.0.0-alpha'; + var DATA_KEY = 'bs.carousel'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + var TRANSITION_DURATION = 600; - var SWIPE_THRESHOLD = 40; var Default = { interval: 5000, keyboard: true, slide: false, pause: 'hover', - wrap: true, - touch: true + wrap: true }; + var DefaultType = { interval: '(number|boolean)', keyboard: 'boolean', slide: '(boolean|string)', pause: '(string|boolean)', - wrap: 'boolean', - touch: 'boolean' + wrap: 'boolean' }; - var DIRECTION_NEXT = 'next'; - var DIRECTION_PREV = 'prev'; - var DIRECTION_LEFT = 'left'; - var DIRECTION_RIGHT = 'right'; - var EVENT_SLIDE = "slide" + EVENT_KEY$2; - var EVENT_SLID = "slid" + EVENT_KEY$2; - var EVENT_KEYDOWN = "keydown" + EVENT_KEY$2; - var EVENT_MOUSEENTER = "mouseenter" + EVENT_KEY$2; - var EVENT_MOUSELEAVE = "mouseleave" + EVENT_KEY$2; - var EVENT_TOUCHSTART = "touchstart" + EVENT_KEY$2; - var EVENT_TOUCHMOVE = "touchmove" + EVENT_KEY$2; - var EVENT_TOUCHEND = "touchend" + EVENT_KEY$2; - var EVENT_POINTERDOWN = "pointerdown" + EVENT_KEY$2; - var EVENT_POINTERUP = "pointerup" + EVENT_KEY$2; - var EVENT_DRAG_START = "dragstart" + EVENT_KEY$2; - var EVENT_LOAD_DATA_API = "load" + EVENT_KEY$2 + DATA_API_KEY$2; - var EVENT_CLICK_DATA_API$2 = "click" + EVENT_KEY$2 + DATA_API_KEY$2; - var CLASS_NAME_CAROUSEL = 'carousel'; - var CLASS_NAME_ACTIVE$1 = 'active'; - var CLASS_NAME_SLIDE = 'slide'; - var CLASS_NAME_END = 'carousel-item-end'; - var CLASS_NAME_START = 'carousel-item-start'; - var CLASS_NAME_NEXT = 'carousel-item-next'; - var CLASS_NAME_PREV = 'carousel-item-prev'; - var CLASS_NAME_POINTER_EVENT = 'pointer-event'; - var SELECTOR_ACTIVE = '.active'; - var SELECTOR_ACTIVE_ITEM = '.active.carousel-item'; - var SELECTOR_ITEM = '.carousel-item'; - var SELECTOR_ITEM_IMG = '.carousel-item img'; - var SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev'; - var SELECTOR_INDICATORS = '.carousel-indicators'; - var SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'; - var SELECTOR_DATA_RIDE = '[data-bs-ride="carousel"]'; - var PointerType = { - TOUCH: 'touch', - PEN: 'pen' + + var Direction = { + NEXT: 'next', + PREVIOUS: 'prev' }; + + var Event = { + SLIDE: 'slide' + EVENT_KEY, + SLID: 'slid' + EVENT_KEY, + KEYDOWN: 'keydown' + EVENT_KEY, + MOUSEENTER: 'mouseenter' + EVENT_KEY, + MOUSELEAVE: 'mouseleave' + EVENT_KEY, + LOAD_DATA_API: 'load' + EVENT_KEY + DATA_API_KEY, + CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY + }; + + var ClassName = { + CAROUSEL: 'carousel', + ACTIVE: 'active', + SLIDE: 'slide', + RIGHT: 'right', + LEFT: 'left', + ITEM: 'carousel-item' + }; + + var Selector = { + ACTIVE: '.active', + ACTIVE_ITEM: '.active.carousel-item', + ITEM: '.carousel-item', + NEXT_PREV: '.next, .prev', + INDICATORS: '.carousel-indicators', + DATA_SLIDE: '[data-slide], [data-slide-to]', + DATA_RIDE: '[data-ride="carousel"]' + }; + /** * ------------------------------------------------------------------------ * Class Definition * ------------------------------------------------------------------------ */ - var Carousel = /*#__PURE__*/function (_BaseComponent) { - _inheritsLoose(Carousel, _BaseComponent); - + var Carousel = (function () { function Carousel(element, config) { - var _this; + _classCallCheck(this, Carousel); - _this = _BaseComponent.call(this, element) || this; - _this._items = null; - _this._interval = null; - _this._activeElement = null; - _this._isPaused = false; - _this._isSliding = false; - _this.touchTimeout = null; - _this.touchStartX = 0; - _this.touchDeltaX = 0; - _this._config = _this._getConfig(config); - _this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, _this._element); - _this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0; - _this._pointerEvent = Boolean(window.PointerEvent); - - _this._addEventListeners(); - - return _this; - } // Getters - - - var _proto = Carousel.prototype; - - // Public - _proto.next = function next() { - if (!this._isSliding) { - this._slide(DIRECTION_NEXT); - } - }; - - _proto.nextWhenVisible = function nextWhenVisible() { - // Don't call next when the page isn't visible - // or the carousel or its parent isn't visible - if (!document.hidden && isVisible(this._element)) { - this.next(); - } - }; - - _proto.prev = function prev() { - if (!this._isSliding) { - this._slide(DIRECTION_PREV); - } - }; - - _proto.pause = function pause(event) { - if (!event) { - this._isPaused = true; - } - - if (SelectorEngine.findOne(SELECTOR_NEXT_PREV, this._element)) { - triggerTransitionEnd(this._element); - this.cycle(true); - } - - clearInterval(this._interval); + this._items = null; this._interval = null; - }; + this._activeElement = null; - _proto.cycle = function cycle(event) { - if (!event) { - this._isPaused = false; + this._isPaused = false; + this._isSliding = false; + + this._config = this._getConfig(config); + this._element = $(element)[0]; + this._indicatorsElement = $(this._element).find(Selector.INDICATORS)[0]; + + this._addEventListeners(); + } + + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + // getters + + _createClass(Carousel, [{ + key: 'next', + + // public + + value: function next() { + if (!this._isSliding) { + this._slide(Direction.NEXT); + } } + }, { + key: 'nextWhenVisible', + value: function nextWhenVisible() { + // Don't call next when the page isn't visible + if (!document.hidden) { + this.next(); + } + } + }, { + key: 'prev', + value: function prev() { + if (!this._isSliding) { + this._slide(Direction.PREVIOUS); + } + } + }, { + key: 'pause', + value: function pause(event) { + if (!event) { + this._isPaused = true; + } + + if ($(this._element).find(Selector.NEXT_PREV)[0] && Util.supportsTransitionEnd()) { + Util.triggerTransitionEnd(this._element); + this.cycle(true); + } - if (this._interval) { clearInterval(this._interval); this._interval = null; } - - if (this._config && this._config.interval && !this._isPaused) { - this._updateInterval(); - - this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval); - } - }; - - _proto.to = function to(index) { - var _this2 = this; - - this._activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element); - - var activeIndex = this._getItemIndex(this._activeElement); - - if (index > this._items.length - 1 || index < 0) { - return; - } - - if (this._isSliding) { - EventHandler.one(this._element, EVENT_SLID, function () { - return _this2.to(index); - }); - return; - } - - if (activeIndex === index) { - this.pause(); - this.cycle(); - return; - } - - var direction = index > activeIndex ? DIRECTION_NEXT : DIRECTION_PREV; - - this._slide(direction, this._items[index]); - }; - - _proto.dispose = function dispose() { - _BaseComponent.prototype.dispose.call(this); - - EventHandler.off(this._element, EVENT_KEY$2); - this._items = null; - this._config = null; - this._interval = null; - this._isPaused = null; - this._isSliding = null; - this._activeElement = null; - this._indicatorsElement = null; - } // Private - ; - - _proto._getConfig = function _getConfig(config) { - config = _extends({}, Default, config); - typeCheckConfig(NAME$2, config, DefaultType); - return config; - }; - - _proto._handleSwipe = function _handleSwipe() { - var absDeltax = Math.abs(this.touchDeltaX); - - if (absDeltax <= SWIPE_THRESHOLD) { - return; - } - - var direction = absDeltax / this.touchDeltaX; - this.touchDeltaX = 0; // swipe left - - if (direction > 0) { - this.prev(); - } // swipe right - - - if (direction < 0) { - this.next(); - } - }; - - _proto._addEventListeners = function _addEventListeners() { - var _this3 = this; - - if (this._config.keyboard) { - EventHandler.on(this._element, EVENT_KEYDOWN, function (event) { - return _this3._keydown(event); - }); - } - - if (this._config.pause === 'hover') { - EventHandler.on(this._element, EVENT_MOUSEENTER, function (event) { - return _this3.pause(event); - }); - EventHandler.on(this._element, EVENT_MOUSELEAVE, function (event) { - return _this3.cycle(event); - }); - } - - if (this._config.touch && this._touchSupported) { - this._addTouchEventListeners(); - } - }; - - _proto._addTouchEventListeners = function _addTouchEventListeners() { - var _this4 = this; - - var start = function start(event) { - if (_this4._pointerEvent && PointerType[event.pointerType.toUpperCase()]) { - _this4.touchStartX = event.clientX; - } else if (!_this4._pointerEvent) { - _this4.touchStartX = event.touches[0].clientX; - } - }; - - var move = function move(event) { - // ensure swiping with one touch and not pinching - if (event.touches && event.touches.length > 1) { - _this4.touchDeltaX = 0; - } else { - _this4.touchDeltaX = event.touches[0].clientX - _this4.touchStartX; - } - }; - - var end = function end(event) { - if (_this4._pointerEvent && PointerType[event.pointerType.toUpperCase()]) { - _this4.touchDeltaX = event.clientX - _this4.touchStartX; + }, { + key: 'cycle', + value: function cycle(event) { + if (!event) { + this._isPaused = false; } - _this4._handleSwipe(); - - if (_this4._config.pause === 'hover') { - // If it's a touch-enabled device, mouseenter/leave are fired as - // part of the mouse compatibility events on first tap - the carousel - // would stop cycling until user tapped out of it; - // here, we listen for touchend, explicitly pause the carousel - // (as if it's the second time we tap on it, mouseenter compat event - // is NOT fired) and after a timeout (to allow for mouse compatibility - // events to fire) we explicitly restart cycling - _this4.pause(); - - if (_this4.touchTimeout) { - clearTimeout(_this4.touchTimeout); - } - - _this4.touchTimeout = setTimeout(function (event) { - return _this4.cycle(event); - }, TOUCHEVENT_COMPAT_WAIT + _this4._config.interval); - } - }; - - SelectorEngine.find(SELECTOR_ITEM_IMG, this._element).forEach(function (itemImg) { - EventHandler.on(itemImg, EVENT_DRAG_START, function (e) { - return e.preventDefault(); - }); - }); - - if (this._pointerEvent) { - EventHandler.on(this._element, EVENT_POINTERDOWN, function (event) { - return start(event); - }); - EventHandler.on(this._element, EVENT_POINTERUP, function (event) { - return end(event); - }); - - this._element.classList.add(CLASS_NAME_POINTER_EVENT); - } else { - EventHandler.on(this._element, EVENT_TOUCHSTART, function (event) { - return start(event); - }); - EventHandler.on(this._element, EVENT_TOUCHMOVE, function (event) { - return move(event); - }); - EventHandler.on(this._element, EVENT_TOUCHEND, function (event) { - return end(event); - }); - } - }; - - _proto._keydown = function _keydown(event) { - if (/input|textarea/i.test(event.target.tagName)) { - return; - } - - switch (event.key) { - case ARROW_LEFT_KEY: - event.preventDefault(); - this.prev(); - break; - - case ARROW_RIGHT_KEY: - event.preventDefault(); - this.next(); - break; - } - }; - - _proto._getItemIndex = function _getItemIndex(element) { - this._items = element && element.parentNode ? SelectorEngine.find(SELECTOR_ITEM, element.parentNode) : []; - return this._items.indexOf(element); - }; - - _proto._getItemByDirection = function _getItemByDirection(direction, activeElement) { - var isNextDirection = direction === DIRECTION_NEXT; - var isPrevDirection = direction === DIRECTION_PREV; - - var activeIndex = this._getItemIndex(activeElement); - - var lastItemIndex = this._items.length - 1; - var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex; - - if (isGoingToWrap && !this._config.wrap) { - return activeElement; - } - - var delta = direction === DIRECTION_PREV ? -1 : 1; - var itemIndex = (activeIndex + delta) % this._items.length; - return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex]; - }; - - _proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) { - var targetIndex = this._getItemIndex(relatedTarget); - - var fromIndex = this._getItemIndex(SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)); - - return EventHandler.trigger(this._element, EVENT_SLIDE, { - relatedTarget: relatedTarget, - direction: eventDirectionName, - from: fromIndex, - to: targetIndex - }); - }; - - _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) { - if (this._indicatorsElement) { - var indicators = SelectorEngine.find(SELECTOR_ACTIVE, this._indicatorsElement); - - for (var i = 0; i < indicators.length; i++) { - indicators[i].classList.remove(CLASS_NAME_ACTIVE$1); + if (this._interval) { + clearInterval(this._interval); + this._interval = null; } - var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)]; - - if (nextIndicator) { - nextIndicator.classList.add(CLASS_NAME_ACTIVE$1); + if (this._config.interval && !this._isPaused) { + this._interval = setInterval($.proxy(document.visibilityState ? this.nextWhenVisible : this.next, this), this._config.interval); } } - }; - - _proto._updateInterval = function _updateInterval() { - var element = this._activeElement || SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element); - - if (!element) { - return; - } - - var elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10); - - if (elementInterval) { - this._config.defaultInterval = this._config.defaultInterval || this._config.interval; - this._config.interval = elementInterval; - } else { - this._config.interval = this._config.defaultInterval || this._config.interval; - } - }; - - _proto._slide = function _slide(direction, element) { - var _this5 = this; - - var activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element); - - var activeElementIndex = this._getItemIndex(activeElement); - - var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement); - - var nextElementIndex = this._getItemIndex(nextElement); - - var isCycling = Boolean(this._interval); - var directionalClassName; - var orderClassName; - var eventDirectionName; - - if (direction === DIRECTION_NEXT) { - directionalClassName = CLASS_NAME_START; - orderClassName = CLASS_NAME_NEXT; - eventDirectionName = DIRECTION_LEFT; - } else { - directionalClassName = CLASS_NAME_END; - orderClassName = CLASS_NAME_PREV; - eventDirectionName = DIRECTION_RIGHT; - } - - if (nextElement && nextElement.classList.contains(CLASS_NAME_ACTIVE$1)) { - this._isSliding = false; - return; - } - - var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName); - - if (slideEvent.defaultPrevented) { - return; - } - - if (!activeElement || !nextElement) { - // Some weirdness is happening, so we bail - return; - } - - this._isSliding = true; - - if (isCycling) { - this.pause(); - } - - this._setActiveIndicatorElement(nextElement); - - this._activeElement = nextElement; - - if (this._element.classList.contains(CLASS_NAME_SLIDE)) { - nextElement.classList.add(orderClassName); - reflow(nextElement); - activeElement.classList.add(directionalClassName); - nextElement.classList.add(directionalClassName); - var transitionDuration = getTransitionDurationFromElement(activeElement); - EventHandler.one(activeElement, TRANSITION_END, function () { - nextElement.classList.remove(directionalClassName, orderClassName); - nextElement.classList.add(CLASS_NAME_ACTIVE$1); - activeElement.classList.remove(CLASS_NAME_ACTIVE$1, orderClassName, directionalClassName); - _this5._isSliding = false; - setTimeout(function () { - EventHandler.trigger(_this5._element, EVENT_SLID, { - relatedTarget: nextElement, - direction: eventDirectionName, - from: activeElementIndex, - to: nextElementIndex - }); - }, 0); - }); - emulateTransitionEnd(activeElement, transitionDuration); - } else { - activeElement.classList.remove(CLASS_NAME_ACTIVE$1); - nextElement.classList.add(CLASS_NAME_ACTIVE$1); - this._isSliding = false; - EventHandler.trigger(this._element, EVENT_SLID, { - relatedTarget: nextElement, - direction: eventDirectionName, - from: activeElementIndex, - to: nextElementIndex - }); - } - - if (isCycling) { - this.cycle(); - } - } // Static - ; - - Carousel.carouselInterface = function carouselInterface(element, config) { - var data = Data.getData(element, DATA_KEY$2); - - var _config = _extends({}, Default, Manipulator.getDataAttributes(element)); - - if (typeof config === 'object') { - _config = _extends({}, _config, config); - } - - var action = typeof config === 'string' ? config : _config.slide; - - if (!data) { - data = new Carousel(element, _config); - } - - if (typeof config === 'number') { - data.to(config); - } else if (typeof action === 'string') { - if (typeof data[action] === 'undefined') { - throw new TypeError("No method named \"" + action + "\""); - } - - data[action](); - } else if (_config.interval && _config.ride) { - data.pause(); - data.cycle(); - } - }; - - Carousel.jQueryInterface = function jQueryInterface(config) { - return this.each(function () { - Carousel.carouselInterface(this, config); - }); - }; - - Carousel.dataApiClickHandler = function dataApiClickHandler(event) { - var target = getElementFromSelector(this); - - if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) { - return; - } - - var config = _extends({}, Manipulator.getDataAttributes(target), Manipulator.getDataAttributes(this)); - - var slideIndex = this.getAttribute('data-bs-slide-to'); - - if (slideIndex) { - config.interval = false; - } - - Carousel.carouselInterface(target, config); - - if (slideIndex) { - Data.getData(target, DATA_KEY$2).to(slideIndex); - } - - event.preventDefault(); - }; - - _createClass(Carousel, null, [{ - key: "Default", - get: function get() { - return Default; - } }, { - key: "DATA_KEY", + key: 'to', + value: function to(index) { + var _this2 = this; + + this._activeElement = $(this._element).find(Selector.ACTIVE_ITEM)[0]; + + var activeIndex = this._getItemIndex(this._activeElement); + + if (index > this._items.length - 1 || index < 0) { + return; + } + + if (this._isSliding) { + $(this._element).one(Event.SLID, function () { + return _this2.to(index); + }); + return; + } + + if (activeIndex === index) { + this.pause(); + this.cycle(); + return; + } + + var direction = index > activeIndex ? Direction.NEXT : Direction.PREVIOUS; + + this._slide(direction, this._items[index]); + } + }, { + key: 'dispose', + value: function dispose() { + $(this._element).off(EVENT_KEY); + $.removeData(this._element, DATA_KEY); + + this._items = null; + this._config = null; + this._element = null; + this._interval = null; + this._isPaused = null; + this._isSliding = null; + this._activeElement = null; + this._indicatorsElement = null; + } + + // private + + }, { + key: '_getConfig', + value: function _getConfig(config) { + config = $.extend({}, Default, config); + Util.typeCheckConfig(NAME, config, DefaultType); + return config; + } + }, { + key: '_addEventListeners', + value: function _addEventListeners() { + if (this._config.keyboard) { + $(this._element).on(Event.KEYDOWN, $.proxy(this._keydown, this)); + } + + if (this._config.pause === 'hover' && !('ontouchstart' in document.documentElement)) { + $(this._element).on(Event.MOUSEENTER, $.proxy(this.pause, this)).on(Event.MOUSELEAVE, $.proxy(this.cycle, this)); + } + } + }, { + key: '_keydown', + value: function _keydown(event) { + event.preventDefault(); + + if (/input|textarea/i.test(event.target.tagName)) { + return; + } + + switch (event.which) { + case 37: + this.prev();break; + case 39: + this.next();break; + default: + return; + } + } + }, { + key: '_getItemIndex', + value: function _getItemIndex(element) { + this._items = $.makeArray($(element).parent().find(Selector.ITEM)); + return this._items.indexOf(element); + } + }, { + key: '_getItemByDirection', + value: function _getItemByDirection(direction, activeElement) { + var isNextDirection = direction === Direction.NEXT; + var isPrevDirection = direction === Direction.PREVIOUS; + var activeIndex = this._getItemIndex(activeElement); + var lastItemIndex = this._items.length - 1; + var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex; + + if (isGoingToWrap && !this._config.wrap) { + return activeElement; + } + + var delta = direction === Direction.PREVIOUS ? -1 : 1; + var itemIndex = (activeIndex + delta) % this._items.length; + + return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex]; + } + }, { + key: '_triggerSlideEvent', + value: function _triggerSlideEvent(relatedTarget, directionalClassname) { + var slideEvent = $.Event(Event.SLIDE, { + relatedTarget: relatedTarget, + direction: directionalClassname + }); + + $(this._element).trigger(slideEvent); + + return slideEvent; + } + }, { + key: '_setActiveIndicatorElement', + value: function _setActiveIndicatorElement(element) { + if (this._indicatorsElement) { + $(this._indicatorsElement).find(Selector.ACTIVE).removeClass(ClassName.ACTIVE); + + var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)]; + + if (nextIndicator) { + $(nextIndicator).addClass(ClassName.ACTIVE); + } + } + } + }, { + key: '_slide', + value: function _slide(direction, element) { + var _this3 = this; + + var activeElement = $(this._element).find(Selector.ACTIVE_ITEM)[0]; + var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement); + + var isCycling = Boolean(this._interval); + + var directionalClassName = direction === Direction.NEXT ? ClassName.LEFT : ClassName.RIGHT; + + if (nextElement && $(nextElement).hasClass(ClassName.ACTIVE)) { + this._isSliding = false; + return; + } + + var slideEvent = this._triggerSlideEvent(nextElement, directionalClassName); + if (slideEvent.isDefaultPrevented()) { + return; + } + + if (!activeElement || !nextElement) { + // some weirdness is happening, so we bail + return; + } + + this._isSliding = true; + + if (isCycling) { + this.pause(); + } + + this._setActiveIndicatorElement(nextElement); + + var slidEvent = $.Event(Event.SLID, { + relatedTarget: nextElement, + direction: directionalClassName + }); + + if (Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.SLIDE)) { + + $(nextElement).addClass(direction); + + Util.reflow(nextElement); + + $(activeElement).addClass(directionalClassName); + $(nextElement).addClass(directionalClassName); + + $(activeElement).one(Util.TRANSITION_END, function () { + $(nextElement).removeClass(directionalClassName).removeClass(direction); + + $(nextElement).addClass(ClassName.ACTIVE); + + $(activeElement).removeClass(ClassName.ACTIVE).removeClass(direction).removeClass(directionalClassName); + + _this3._isSliding = false; + + setTimeout(function () { + return $(_this3._element).trigger(slidEvent); + }, 0); + }).emulateTransitionEnd(TRANSITION_DURATION); + } else { + $(activeElement).removeClass(ClassName.ACTIVE); + $(nextElement).addClass(ClassName.ACTIVE); + + this._isSliding = false; + $(this._element).trigger(slidEvent); + } + + if (isCycling) { + this.cycle(); + } + } + + // static + + }], [{ + key: '_jQueryInterface', + value: function _jQueryInterface(config) { + return this.each(function () { + var data = $(this).data(DATA_KEY); + var _config = $.extend({}, Default, $(this).data()); + + if (typeof config === 'object') { + $.extend(_config, config); + } + + var action = typeof config === 'string' ? config : _config.slide; + + if (!data) { + data = new Carousel(this, _config); + $(this).data(DATA_KEY, data); + } + + if (typeof config === 'number') { + data.to(config); + } else if (typeof action === 'string') { + if (data[action] === undefined) { + throw new Error('No method named "' + action + '"'); + } + data[action](); + } else if (_config.interval) { + data.pause(); + data.cycle(); + } + }); + } + }, { + key: '_dataApiClickHandler', + value: function _dataApiClickHandler(event) { + var selector = Util.getSelectorFromElement(this); + + if (!selector) { + return; + } + + var target = $(selector)[0]; + + if (!target || !$(target).hasClass(ClassName.CAROUSEL)) { + return; + } + + var config = $.extend({}, $(target).data(), $(this).data()); + var slideIndex = this.getAttribute('data-slide-to'); + + if (slideIndex) { + config.interval = false; + } + + Carousel._jQueryInterface.call($(target), config); + + if (slideIndex) { + $(target).data(DATA_KEY).to(slideIndex); + } + + event.preventDefault(); + } + }, { + key: 'VERSION', get: function get() { - return DATA_KEY$2; + return VERSION; + } + }, { + key: 'Default', + get: function get() { + return Default; } }]); return Carousel; - }(BaseComponent); - /** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ + })(); + $(document).on(Event.CLICK_DATA_API, Selector.DATA_SLIDE, Carousel._dataApiClickHandler); - EventHandler.on(document, EVENT_CLICK_DATA_API$2, SELECTOR_DATA_SLIDE, Carousel.dataApiClickHandler); - EventHandler.on(window, EVENT_LOAD_DATA_API, function () { - var carousels = SelectorEngine.find(SELECTOR_DATA_RIDE); - - for (var i = 0, len = carousels.length; i < len; i++) { - Carousel.carouselInterface(carousels[i], Data.getData(carousels[i], DATA_KEY$2)); - } + $(window).on(Event.LOAD_DATA_API, function () { + $(Selector.DATA_RIDE).each(function () { + var $carousel = $(this); + Carousel._jQueryInterface.call($carousel, $carousel.data()); + }); }); + /** * ------------------------------------------------------------------------ * jQuery * ------------------------------------------------------------------------ - * add .Carousel to jQuery only if jQuery is present */ - onDOMContentLoaded(function () { - var $ = getjQuery(); - /* istanbul ignore if */ + $.fn[NAME] = Carousel._jQueryInterface; + $.fn[NAME].Constructor = Carousel; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Carousel._jQueryInterface; + }; - if ($) { - var JQUERY_NO_CONFLICT = $.fn[NAME$2]; - $.fn[NAME$2] = Carousel.jQueryInterface; - $.fn[NAME$2].Constructor = Carousel; + return Carousel; +})(jQuery); - $.fn[NAME$2].noConflict = function () { - $.fn[NAME$2] = JQUERY_NO_CONFLICT; - return Carousel.jQueryInterface; - }; - } - }); +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0-alpha.2): collapse.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +var Collapse = (function ($) { /** * ------------------------------------------------------------------------ @@ -1657,400 +1022,357 @@ * ------------------------------------------------------------------------ */ - var NAME$3 = 'collapse'; - var DATA_KEY$3 = 'bs.collapse'; - var EVENT_KEY$3 = "." + DATA_KEY$3; - var DATA_API_KEY$3 = '.data-api'; - var Default$1 = { + var NAME = 'collapse'; + var VERSION = '4.0.0-alpha'; + var DATA_KEY = 'bs.collapse'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + var TRANSITION_DURATION = 600; + + var Default = { toggle: true, parent: '' }; - var DefaultType$1 = { + + var DefaultType = { toggle: 'boolean', - parent: '(string|element)' + parent: 'string' }; - var EVENT_SHOW = "show" + EVENT_KEY$3; - var EVENT_SHOWN = "shown" + EVENT_KEY$3; - var EVENT_HIDE = "hide" + EVENT_KEY$3; - var EVENT_HIDDEN = "hidden" + EVENT_KEY$3; - var EVENT_CLICK_DATA_API$3 = "click" + EVENT_KEY$3 + DATA_API_KEY$3; - var CLASS_NAME_SHOW = 'show'; - var CLASS_NAME_COLLAPSE = 'collapse'; - var CLASS_NAME_COLLAPSING = 'collapsing'; - var CLASS_NAME_COLLAPSED = 'collapsed'; - var WIDTH = 'width'; - var HEIGHT = 'height'; - var SELECTOR_ACTIVES = '.show, .collapsing'; - var SELECTOR_DATA_TOGGLE$1 = '[data-bs-toggle="collapse"]'; + + var Event = { + SHOW: 'show' + EVENT_KEY, + SHOWN: 'shown' + EVENT_KEY, + HIDE: 'hide' + EVENT_KEY, + HIDDEN: 'hidden' + EVENT_KEY, + CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY + }; + + var ClassName = { + IN: 'in', + COLLAPSE: 'collapse', + COLLAPSING: 'collapsing', + COLLAPSED: 'collapsed' + }; + + var Dimension = { + WIDTH: 'width', + HEIGHT: 'height' + }; + + var Selector = { + ACTIVES: '.panel > .in, .panel > .collapsing', + DATA_TOGGLE: '[data-toggle="collapse"]' + }; + /** * ------------------------------------------------------------------------ * Class Definition * ------------------------------------------------------------------------ */ - var Collapse = /*#__PURE__*/function (_BaseComponent) { - _inheritsLoose(Collapse, _BaseComponent); - + var Collapse = (function () { function Collapse(element, config) { - var _this; + _classCallCheck(this, Collapse); - _this = _BaseComponent.call(this, element) || this; - _this._isTransitioning = false; - _this._config = _this._getConfig(config); - _this._triggerArray = SelectorEngine.find(SELECTOR_DATA_TOGGLE$1 + "[href=\"#" + element.id + "\"]," + (SELECTOR_DATA_TOGGLE$1 + "[data-bs-target=\"#" + element.id + "\"]")); - var toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE$1); + this._isTransitioning = false; + this._element = element; + this._config = this._getConfig(config); + this._triggerArray = $.makeArray($('[data-toggle="collapse"][href="#' + element.id + '"],' + ('[data-toggle="collapse"][data-target="#' + element.id + '"]'))); - for (var i = 0, len = toggleList.length; i < len; i++) { - var elem = toggleList[i]; - var selector = getSelectorFromElement(elem); - var filterElement = SelectorEngine.find(selector).filter(function (foundElem) { - return foundElem === element; - }); + this._parent = this._config.parent ? this._getParent() : null; - if (selector !== null && filterElement.length) { - _this._selector = selector; - - _this._triggerArray.push(elem); - } + if (!this._config.parent) { + this._addAriaAndCollapsedClass(this._element, this._triggerArray); } - _this._parent = _this._config.parent ? _this._getParent() : null; - - if (!_this._config.parent) { - _this._addAriaAndCollapsedClass(_this._element, _this._triggerArray); + if (this._config.toggle) { + this.toggle(); } + } - if (_this._config.toggle) { - _this.toggle(); - } + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ - return _this; - } // Getters + // getters + _createClass(Collapse, [{ + key: 'toggle', - var _proto = Collapse.prototype; + // public - // Public - _proto.toggle = function toggle() { - if (this._element.classList.contains(CLASS_NAME_SHOW)) { - this.hide(); - } else { - this.show(); - } - }; - - _proto.show = function show() { - var _this2 = this; - - if (this._isTransitioning || this._element.classList.contains(CLASS_NAME_SHOW)) { - return; - } - - var actives; - var activesData; - - if (this._parent) { - actives = SelectorEngine.find(SELECTOR_ACTIVES, this._parent).filter(function (elem) { - if (typeof _this2._config.parent === 'string') { - return elem.getAttribute('data-bs-parent') === _this2._config.parent; - } - - return elem.classList.contains(CLASS_NAME_COLLAPSE); - }); - - if (actives.length === 0) { - actives = null; - } - } - - var container = SelectorEngine.findOne(this._selector); - - if (actives) { - var tempActiveData = actives.find(function (elem) { - return container !== elem; - }); - activesData = tempActiveData ? Data.getData(tempActiveData, DATA_KEY$3) : null; - - if (activesData && activesData._isTransitioning) { - return; - } - } - - var startEvent = EventHandler.trigger(this._element, EVENT_SHOW); - - if (startEvent.defaultPrevented) { - return; - } - - if (actives) { - actives.forEach(function (elemActive) { - if (container !== elemActive) { - Collapse.collapseInterface(elemActive, 'hide'); - } - - if (!activesData) { - Data.setData(elemActive, DATA_KEY$3, null); - } - }); - } - - var dimension = this._getDimension(); - - this._element.classList.remove(CLASS_NAME_COLLAPSE); - - this._element.classList.add(CLASS_NAME_COLLAPSING); - - this._element.style[dimension] = 0; - - if (this._triggerArray.length) { - this._triggerArray.forEach(function (element) { - element.classList.remove(CLASS_NAME_COLLAPSED); - element.setAttribute('aria-expanded', true); - }); - } - - this.setTransitioning(true); - - var complete = function complete() { - _this2._element.classList.remove(CLASS_NAME_COLLAPSING); - - _this2._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW); - - _this2._element.style[dimension] = ''; - - _this2.setTransitioning(false); - - EventHandler.trigger(_this2._element, EVENT_SHOWN); - }; - - var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1); - var scrollSize = "scroll" + capitalizedDimension; - var transitionDuration = getTransitionDurationFromElement(this._element); - EventHandler.one(this._element, TRANSITION_END, complete); - emulateTransitionEnd(this._element, transitionDuration); - this._element.style[dimension] = this._element[scrollSize] + "px"; - }; - - _proto.hide = function hide() { - var _this3 = this; - - if (this._isTransitioning || !this._element.classList.contains(CLASS_NAME_SHOW)) { - return; - } - - var startEvent = EventHandler.trigger(this._element, EVENT_HIDE); - - if (startEvent.defaultPrevented) { - return; - } - - var dimension = this._getDimension(); - - this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + "px"; - reflow(this._element); - - this._element.classList.add(CLASS_NAME_COLLAPSING); - - this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW); - - var triggerArrayLength = this._triggerArray.length; - - if (triggerArrayLength > 0) { - for (var i = 0; i < triggerArrayLength; i++) { - var trigger = this._triggerArray[i]; - var elem = getElementFromSelector(trigger); - - if (elem && !elem.classList.contains(CLASS_NAME_SHOW)) { - trigger.classList.add(CLASS_NAME_COLLAPSED); - trigger.setAttribute('aria-expanded', false); - } - } - } - - this.setTransitioning(true); - - var complete = function complete() { - _this3.setTransitioning(false); - - _this3._element.classList.remove(CLASS_NAME_COLLAPSING); - - _this3._element.classList.add(CLASS_NAME_COLLAPSE); - - EventHandler.trigger(_this3._element, EVENT_HIDDEN); - }; - - this._element.style[dimension] = ''; - var transitionDuration = getTransitionDurationFromElement(this._element); - EventHandler.one(this._element, TRANSITION_END, complete); - emulateTransitionEnd(this._element, transitionDuration); - }; - - _proto.setTransitioning = function setTransitioning(isTransitioning) { - this._isTransitioning = isTransitioning; - }; - - _proto.dispose = function dispose() { - _BaseComponent.prototype.dispose.call(this); - - this._config = null; - this._parent = null; - this._triggerArray = null; - this._isTransitioning = null; - } // Private - ; - - _proto._getConfig = function _getConfig(config) { - config = _extends({}, Default$1, config); - config.toggle = Boolean(config.toggle); // Coerce string values - - typeCheckConfig(NAME$3, config, DefaultType$1); - return config; - }; - - _proto._getDimension = function _getDimension() { - return this._element.classList.contains(WIDTH) ? WIDTH : HEIGHT; - }; - - _proto._getParent = function _getParent() { - var _this4 = this; - - var parent = this._config.parent; - - if (isElement(parent)) { - // it's a jQuery object - if (typeof parent.jquery !== 'undefined' || typeof parent[0] !== 'undefined') { - parent = parent[0]; - } - } else { - parent = SelectorEngine.findOne(parent); - } - - var selector = SELECTOR_DATA_TOGGLE$1 + "[data-bs-parent=\"" + parent + "\"]"; - SelectorEngine.find(selector, parent).forEach(function (element) { - var selected = getElementFromSelector(element); - - _this4._addAriaAndCollapsedClass(selected, [element]); - }); - return parent; - }; - - _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) { - if (!element || !triggerArray.length) { - return; - } - - var isOpen = element.classList.contains(CLASS_NAME_SHOW); - triggerArray.forEach(function (elem) { - if (isOpen) { - elem.classList.remove(CLASS_NAME_COLLAPSED); + value: function toggle() { + if ($(this._element).hasClass(ClassName.IN)) { + this.hide(); } else { - elem.classList.add(CLASS_NAME_COLLAPSED); + this.show(); } - - elem.setAttribute('aria-expanded', isOpen); - }); - } // Static - ; - - Collapse.collapseInterface = function collapseInterface(element, config) { - var data = Data.getData(element, DATA_KEY$3); - - var _config = _extends({}, Default$1, Manipulator.getDataAttributes(element), typeof config === 'object' && config ? config : {}); - - if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) { - _config.toggle = false; - } - - if (!data) { - data = new Collapse(element, _config); - } - - if (typeof config === 'string') { - if (typeof data[config] === 'undefined') { - throw new TypeError("No method named \"" + config + "\""); - } - - data[config](); - } - }; - - Collapse.jQueryInterface = function jQueryInterface(config) { - return this.each(function () { - Collapse.collapseInterface(this, config); - }); - }; - - _createClass(Collapse, null, [{ - key: "Default", - get: function get() { - return Default$1; } }, { - key: "DATA_KEY", + key: 'show', + value: function show() { + var _this4 = this; + + if (this._isTransitioning || $(this._element).hasClass(ClassName.IN)) { + return; + } + + var actives = undefined; + var activesData = undefined; + + if (this._parent) { + actives = $.makeArray($(Selector.ACTIVES)); + if (!actives.length) { + actives = null; + } + } + + if (actives) { + activesData = $(actives).data(DATA_KEY); + if (activesData && activesData._isTransitioning) { + return; + } + } + + var startEvent = $.Event(Event.SHOW); + $(this._element).trigger(startEvent); + if (startEvent.isDefaultPrevented()) { + return; + } + + if (actives) { + Collapse._jQueryInterface.call($(actives), 'hide'); + if (!activesData) { + $(actives).data(DATA_KEY, null); + } + } + + var dimension = this._getDimension(); + + $(this._element).removeClass(ClassName.COLLAPSE).addClass(ClassName.COLLAPSING); + + this._element.style[dimension] = 0; + this._element.setAttribute('aria-expanded', true); + + if (this._triggerArray.length) { + $(this._triggerArray).removeClass(ClassName.COLLAPSED).attr('aria-expanded', true); + } + + this.setTransitioning(true); + + var complete = function complete() { + $(_this4._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).addClass(ClassName.IN); + + _this4._element.style[dimension] = ''; + + _this4.setTransitioning(false); + + $(_this4._element).trigger(Event.SHOWN); + }; + + if (!Util.supportsTransitionEnd()) { + complete(); + return; + } + + var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1); + var scrollSize = 'scroll' + capitalizedDimension; + + $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION); + + this._element.style[dimension] = this._element[scrollSize] + 'px'; + } + }, { + key: 'hide', + value: function hide() { + var _this5 = this; + + if (this._isTransitioning || !$(this._element).hasClass(ClassName.IN)) { + return; + } + + var startEvent = $.Event(Event.HIDE); + $(this._element).trigger(startEvent); + if (startEvent.isDefaultPrevented()) { + return; + } + + var dimension = this._getDimension(); + var offsetDimension = dimension === Dimension.WIDTH ? 'offsetWidth' : 'offsetHeight'; + + this._element.style[dimension] = this._element[offsetDimension] + 'px'; + + Util.reflow(this._element); + + $(this._element).addClass(ClassName.COLLAPSING).removeClass(ClassName.COLLAPSE).removeClass(ClassName.IN); + + this._element.setAttribute('aria-expanded', false); + + if (this._triggerArray.length) { + $(this._triggerArray).addClass(ClassName.COLLAPSED).attr('aria-expanded', false); + } + + this.setTransitioning(true); + + var complete = function complete() { + _this5.setTransitioning(false); + $(_this5._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).trigger(Event.HIDDEN); + }; + + this._element.style[dimension] = 0; + + if (!Util.supportsTransitionEnd()) { + complete(); + return; + } + + $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION); + } + }, { + key: 'setTransitioning', + value: function setTransitioning(isTransitioning) { + this._isTransitioning = isTransitioning; + } + }, { + key: 'dispose', + value: function dispose() { + $.removeData(this._element, DATA_KEY); + + this._config = null; + this._parent = null; + this._element = null; + this._triggerArray = null; + this._isTransitioning = null; + } + + // private + + }, { + key: '_getConfig', + value: function _getConfig(config) { + config = $.extend({}, Default, config); + config.toggle = Boolean(config.toggle); // coerce string values + Util.typeCheckConfig(NAME, config, DefaultType); + return config; + } + }, { + key: '_getDimension', + value: function _getDimension() { + var hasWidth = $(this._element).hasClass(Dimension.WIDTH); + return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT; + } + }, { + key: '_getParent', + value: function _getParent() { + var _this6 = this; + + var parent = $(this._config.parent)[0]; + var selector = '[data-toggle="collapse"][data-parent="' + this._config.parent + '"]'; + + $(parent).find(selector).each(function (i, element) { + _this6._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]); + }); + + return parent; + } + }, { + key: '_addAriaAndCollapsedClass', + value: function _addAriaAndCollapsedClass(element, triggerArray) { + if (element) { + var isOpen = $(element).hasClass(ClassName.IN); + element.setAttribute('aria-expanded', isOpen); + + if (triggerArray.length) { + $(triggerArray).toggleClass(ClassName.COLLAPSED, !isOpen).attr('aria-expanded', isOpen); + } + } + } + + // static + + }], [{ + key: '_getTargetFromElement', + value: function _getTargetFromElement(element) { + var selector = Util.getSelectorFromElement(element); + return selector ? $(selector)[0] : null; + } + }, { + key: '_jQueryInterface', + value: function _jQueryInterface(config) { + return this.each(function () { + var $this = $(this); + var data = $this.data(DATA_KEY); + var _config = $.extend({}, Default, $this.data(), typeof config === 'object' && config); + + if (!data && _config.toggle && /show|hide/.test(config)) { + _config.toggle = false; + } + + if (!data) { + data = new Collapse(this, _config); + $this.data(DATA_KEY, data); + } + + if (typeof config === 'string') { + if (data[config] === undefined) { + throw new Error('No method named "' + config + '"'); + } + data[config](); + } + }); + } + }, { + key: 'VERSION', get: function get() { - return DATA_KEY$3; + return VERSION; + } + }, { + key: 'Default', + get: function get() { + return Default; } }]); return Collapse; - }(BaseComponent); - /** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ + })(); + $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) { + event.preventDefault(); - EventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$1, function (event) { - // preventDefault only for elements (which change the URL) not inside the collapsible element - if (event.target.tagName === 'A') { - event.preventDefault(); - } + var target = Collapse._getTargetFromElement(this); + var data = $(target).data(DATA_KEY); + var config = data ? 'toggle' : $(this).data(); - var triggerData = Manipulator.getDataAttributes(this); - var selector = getSelectorFromElement(this); - var selectorElements = SelectorEngine.find(selector); - selectorElements.forEach(function (element) { - var data = Data.getData(element, DATA_KEY$3); - var config; - - if (data) { - // update parent attribute - if (data._parent === null && typeof triggerData.parent === 'string') { - data._config.parent = triggerData.parent; - data._parent = data._getParent(); - } - - config = 'toggle'; - } else { - config = triggerData; - } - - Collapse.collapseInterface(element, config); - }); + Collapse._jQueryInterface.call($(target), config); }); + /** * ------------------------------------------------------------------------ * jQuery * ------------------------------------------------------------------------ - * add .Collapse to jQuery only if jQuery is present */ - onDOMContentLoaded(function () { - var $ = getjQuery(); - /* istanbul ignore if */ + $.fn[NAME] = Collapse._jQueryInterface; + $.fn[NAME].Constructor = Collapse; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Collapse._jQueryInterface; + }; - if ($) { - var JQUERY_NO_CONFLICT = $.fn[NAME$3]; - $.fn[NAME$3] = Collapse.jQueryInterface; - $.fn[NAME$3].Constructor = Collapse; + return Collapse; +})(jQuery); - $.fn[NAME$3].noConflict = function () { - $.fn[NAME$3] = JQUERY_NO_CONFLICT; - return Collapse.jQueryInterface; - }; - } - }); +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0-alpha.2): dropdown.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +var Dropdown = (function ($) { /** * ------------------------------------------------------------------------ @@ -2058,482 +1380,286 @@ * ------------------------------------------------------------------------ */ - var NAME$4 = 'dropdown'; - var DATA_KEY$4 = 'bs.dropdown'; - var EVENT_KEY$4 = "." + DATA_KEY$4; - var DATA_API_KEY$4 = '.data-api'; - var ESCAPE_KEY = 'Escape'; - var SPACE_KEY = 'Space'; - var TAB_KEY = 'Tab'; - var ARROW_UP_KEY = 'ArrowUp'; - var ARROW_DOWN_KEY = 'ArrowDown'; - var RIGHT_MOUSE_BUTTON = 2; // MouseEvent.button value for the secondary button, usually the right button + var NAME = 'dropdown'; + var VERSION = '4.0.0-alpha'; + var DATA_KEY = 'bs.dropdown'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; - var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEY + "|" + ARROW_DOWN_KEY + "|" + ESCAPE_KEY); - var EVENT_HIDE$1 = "hide" + EVENT_KEY$4; - var EVENT_HIDDEN$1 = "hidden" + EVENT_KEY$4; - var EVENT_SHOW$1 = "show" + EVENT_KEY$4; - var EVENT_SHOWN$1 = "shown" + EVENT_KEY$4; - var EVENT_CLICK = "click" + EVENT_KEY$4; - var EVENT_CLICK_DATA_API$4 = "click" + EVENT_KEY$4 + DATA_API_KEY$4; - var EVENT_KEYDOWN_DATA_API = "keydown" + EVENT_KEY$4 + DATA_API_KEY$4; - var EVENT_KEYUP_DATA_API = "keyup" + EVENT_KEY$4 + DATA_API_KEY$4; - var CLASS_NAME_DISABLED = 'disabled'; - var CLASS_NAME_SHOW$1 = 'show'; - var CLASS_NAME_DROPUP = 'dropup'; - var CLASS_NAME_DROPEND = 'dropend'; - var CLASS_NAME_DROPSTART = 'dropstart'; - var CLASS_NAME_NAVBAR = 'navbar'; - var SELECTOR_DATA_TOGGLE$2 = '[data-bs-toggle="dropdown"]'; - var SELECTOR_FORM_CHILD = '.dropdown form'; - var SELECTOR_MENU = '.dropdown-menu'; - var SELECTOR_NAVBAR_NAV = '.navbar-nav'; - var SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'; - var PLACEMENT_TOP = isRTL ? 'top-end' : 'top-start'; - var PLACEMENT_TOPEND = isRTL ? 'top-start' : 'top-end'; - var PLACEMENT_BOTTOM = isRTL ? 'bottom-end' : 'bottom-start'; - var PLACEMENT_BOTTOMEND = isRTL ? 'bottom-start' : 'bottom-end'; - var PLACEMENT_RIGHT = isRTL ? 'left-start' : 'right-start'; - var PLACEMENT_LEFT = isRTL ? 'right-start' : 'left-start'; - var Default$2 = { - offset: 0, - flip: true, - boundary: 'clippingParents', - reference: 'toggle', - display: 'dynamic', - popperConfig: null + var Event = { + HIDE: 'hide' + EVENT_KEY, + HIDDEN: 'hidden' + EVENT_KEY, + SHOW: 'show' + EVENT_KEY, + SHOWN: 'shown' + EVENT_KEY, + CLICK: 'click' + EVENT_KEY, + CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY, + KEYDOWN_DATA_API: 'keydown' + EVENT_KEY + DATA_API_KEY }; - var DefaultType$2 = { - offset: '(number|string|function)', - flip: 'boolean', - boundary: '(string|element)', - reference: '(string|element)', - display: 'string', - popperConfig: '(null|object)' + + var ClassName = { + BACKDROP: 'dropdown-backdrop', + DISABLED: 'disabled', + OPEN: 'open' }; + + var Selector = { + BACKDROP: '.dropdown-backdrop', + DATA_TOGGLE: '[data-toggle="dropdown"]', + FORM_CHILD: '.dropdown form', + ROLE_MENU: '[role="menu"]', + ROLE_LISTBOX: '[role="listbox"]', + NAVBAR_NAV: '.navbar-nav', + VISIBLE_ITEMS: '[role="menu"] li:not(.disabled) a, ' + '[role="listbox"] li:not(.disabled) a' + }; + /** * ------------------------------------------------------------------------ * Class Definition * ------------------------------------------------------------------------ */ - var Dropdown = /*#__PURE__*/function (_BaseComponent) { - _inheritsLoose(Dropdown, _BaseComponent); + var Dropdown = (function () { + function Dropdown(element) { + _classCallCheck(this, Dropdown); - function Dropdown(element, config) { - var _this; + this._element = element; - _this = _BaseComponent.call(this, element) || this; - _this._popper = null; - _this._config = _this._getConfig(config); - _this._menu = _this._getMenuElement(); - _this._inNavbar = _this._detectNavbar(); + this._addEventListeners(); + } - _this._addEventListeners(); + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ - return _this; - } // Getters + // getters + _createClass(Dropdown, [{ + key: 'toggle', - var _proto = Dropdown.prototype; + // public - // Public - _proto.toggle = function toggle() { - if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED)) { - return; - } - - var isActive = this._element.classList.contains(CLASS_NAME_SHOW$1); - - Dropdown.clearMenus(); - - if (isActive) { - return; - } - - this.show(); - }; - - _proto.show = function show() { - if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED) || this._menu.classList.contains(CLASS_NAME_SHOW$1)) { - return; - } - - var parent = Dropdown.getParentFromElement(this._element); - var relatedTarget = { - relatedTarget: this._element - }; - var showEvent = EventHandler.trigger(this._element, EVENT_SHOW$1, relatedTarget); - - if (showEvent.defaultPrevented) { - return; - } // Totally disable Popper for Dropdowns in Navbar - - - if (!this._inNavbar) { - if (typeof Popper__namespace === 'undefined') { - throw new TypeError('Bootstrap\'s dropdowns require Popper (https://popper.js.org)'); + value: function toggle() { + if (this.disabled || $(this).hasClass(ClassName.DISABLED)) { + return false; } - var referenceElement = this._element; + var parent = Dropdown._getParentFromElement(this); + var isActive = $(parent).hasClass(ClassName.OPEN); - if (this._config.reference === 'parent') { - referenceElement = parent; - } else if (isElement(this._config.reference)) { - referenceElement = this._config.reference; // Check if it's jQuery element + Dropdown._clearMenus(); - if (typeof this._config.reference.jquery !== 'undefined') { - referenceElement = this._config.reference[0]; + if (isActive) { + return false; + } + + if ('ontouchstart' in document.documentElement && !$(parent).closest(Selector.NAVBAR_NAV).length) { + + // if mobile we use a backdrop because click events don't delegate + var dropdown = document.createElement('div'); + dropdown.className = ClassName.BACKDROP; + $(dropdown).insertBefore(this); + $(dropdown).on('click', Dropdown._clearMenus); + } + + var relatedTarget = { relatedTarget: this }; + var showEvent = $.Event(Event.SHOW, relatedTarget); + + $(parent).trigger(showEvent); + + if (showEvent.isDefaultPrevented()) { + return false; + } + + this.focus(); + this.setAttribute('aria-expanded', 'true'); + + $(parent).toggleClass(ClassName.OPEN); + $(parent).trigger($.Event(Event.SHOWN, relatedTarget)); + + return false; + } + }, { + key: 'dispose', + value: function dispose() { + $.removeData(this._element, DATA_KEY); + $(this._element).off(EVENT_KEY); + this._element = null; + } + + // private + + }, { + key: '_addEventListeners', + value: function _addEventListeners() { + $(this._element).on(Event.CLICK, this.toggle); + } + + // static + + }], [{ + key: '_jQueryInterface', + value: function _jQueryInterface(config) { + return this.each(function () { + var data = $(this).data(DATA_KEY); + + if (!data) { + $(this).data(DATA_KEY, data = new Dropdown(this)); } - } - this._popper = Popper.createPopper(referenceElement, this._menu, this._getPopperConfig()); - } // 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 && !parent.closest(SELECTOR_NAVBAR_NAV)) { - var _ref; - - (_ref = []).concat.apply(_ref, document.body.children).forEach(function (elem) { - return EventHandler.on(elem, 'mouseover', null, noop()); + if (typeof config === 'string') { + if (data[config] === undefined) { + throw new Error('No method named "' + config + '"'); + } + data[config].call(this); + } }); } + }, { + key: '_clearMenus', + value: function _clearMenus(event) { + if (event && event.which === 3) { + return; + } - this._element.focus(); + var backdrop = $(Selector.BACKDROP)[0]; + if (backdrop) { + backdrop.parentNode.removeChild(backdrop); + } - this._element.setAttribute('aria-expanded', true); + var toggles = $.makeArray($(Selector.DATA_TOGGLE)); - this._menu.classList.toggle(CLASS_NAME_SHOW$1); + for (var i = 0; i < toggles.length; i++) { + var _parent = Dropdown._getParentFromElement(toggles[i]); + var relatedTarget = { relatedTarget: toggles[i] }; - this._element.classList.toggle(CLASS_NAME_SHOW$1); + if (!$(_parent).hasClass(ClassName.OPEN)) { + continue; + } - EventHandler.trigger(parent, EVENT_SHOWN$1, relatedTarget); - }; + if (event && event.type === 'click' && /input|textarea/i.test(event.target.tagName) && $.contains(_parent, event.target)) { + continue; + } - _proto.hide = function hide() { - if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED) || !this._menu.classList.contains(CLASS_NAME_SHOW$1)) { - return; + var hideEvent = $.Event(Event.HIDE, relatedTarget); + $(_parent).trigger(hideEvent); + if (hideEvent.isDefaultPrevented()) { + continue; + } + + toggles[i].setAttribute('aria-expanded', 'false'); + + $(_parent).removeClass(ClassName.OPEN).trigger($.Event(Event.HIDDEN, relatedTarget)); + } } + }, { + key: '_getParentFromElement', + value: function _getParentFromElement(element) { + var parent = undefined; + var selector = Util.getSelectorFromElement(element); - var parent = Dropdown.getParentFromElement(this._element); - var relatedTarget = { - relatedTarget: this._element - }; - var hideEvent = EventHandler.trigger(parent, EVENT_HIDE$1, relatedTarget); + if (selector) { + parent = $(selector)[0]; + } - if (hideEvent.defaultPrevented) { - return; + return parent || element.parentNode; } + }, { + key: '_dataApiKeydownHandler', + value: function _dataApiKeydownHandler(event) { + if (!/(38|40|27|32)/.test(event.which) || /input|textarea/i.test(event.target.tagName)) { + return; + } - if (this._popper) { - this._popper.destroy(); - } - - this._menu.classList.toggle(CLASS_NAME_SHOW$1); - - this._element.classList.toggle(CLASS_NAME_SHOW$1); - - EventHandler.trigger(parent, EVENT_HIDDEN$1, relatedTarget); - }; - - _proto.dispose = function dispose() { - _BaseComponent.prototype.dispose.call(this); - - EventHandler.off(this._element, EVENT_KEY$4); - this._menu = null; - - if (this._popper) { - this._popper.destroy(); - - this._popper = null; - } - }; - - _proto.update = function update() { - this._inNavbar = this._detectNavbar(); - - if (this._popper) { - this._popper.update(); - } - } // Private - ; - - _proto._addEventListeners = function _addEventListeners() { - var _this2 = this; - - EventHandler.on(this._element, EVENT_CLICK, function (event) { event.preventDefault(); event.stopPropagation(); - _this2.toggle(); - }); - }; + if (this.disabled || $(this).hasClass(ClassName.DISABLED)) { + return; + } - _proto._getConfig = function _getConfig(config) { - config = _extends({}, this.constructor.Default, Manipulator.getDataAttributes(this._element), config); - typeCheckConfig(NAME$4, config, this.constructor.DefaultType); - return config; - }; + var parent = Dropdown._getParentFromElement(this); + var isActive = $(parent).hasClass(ClassName.OPEN); - _proto._getMenuElement = function _getMenuElement() { - return SelectorEngine.next(this._element, SELECTOR_MENU)[0]; - }; + if (!isActive && event.which !== 27 || isActive && event.which === 27) { - _proto._getPlacement = function _getPlacement() { - var parentDropdown = this._element.parentNode; - - if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) { - return PLACEMENT_RIGHT; - } - - if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) { - return PLACEMENT_LEFT; - } // We need to trim the value because custom properties can also include spaces - - - var isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end'; - - if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) { - return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP; - } - - return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM; - }; - - _proto._detectNavbar = function _detectNavbar() { - return this._element.closest("." + CLASS_NAME_NAVBAR) !== null; - }; - - _proto._getPopperConfig = function _getPopperConfig() { - var popperConfig = { - placement: this._getPlacement(), - modifiers: [{ - name: 'preventOverflow', - options: { - altBoundary: this._config.flip, - rootBoundary: this._config.boundary + if (event.which === 27) { + var toggle = $(parent).find(Selector.DATA_TOGGLE)[0]; + $(toggle).trigger('focus'); } - }] - }; // Disable Popper if we have a static display - if (this._config.display === 'static') { - popperConfig.modifiers = [{ - name: 'applyStyles', - enabled: false - }]; - } - - return _extends({}, popperConfig, this._config.popperConfig); - } // Static - ; - - Dropdown.dropdownInterface = function dropdownInterface(element, config) { - var data = Data.getData(element, DATA_KEY$4); - - var _config = typeof config === 'object' ? config : null; - - if (!data) { - data = new Dropdown(element, _config); - } - - if (typeof config === 'string') { - if (typeof data[config] === 'undefined') { - throw new TypeError("No method named \"" + config + "\""); + $(this).trigger('click'); + return; } - data[config](); - } - }; + var items = $.makeArray($(Selector.VISIBLE_ITEMS)); - Dropdown.jQueryInterface = function jQueryInterface(config) { - return this.each(function () { - Dropdown.dropdownInterface(this, config); - }); - }; + items = items.filter(function (item) { + return item.offsetWidth || item.offsetHeight; + }); - Dropdown.clearMenus = function clearMenus(event) { - if (event && (event.button === RIGHT_MOUSE_BUTTON || event.type === 'keyup' && event.key !== TAB_KEY)) { - return; - } - - var toggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE$2); - - for (var i = 0, len = toggles.length; i < len; i++) { - var parent = Dropdown.getParentFromElement(toggles[i]); - var context = Data.getData(toggles[i], DATA_KEY$4); - var relatedTarget = { - relatedTarget: toggles[i] - }; - - if (event && event.type === 'click') { - relatedTarget.clickEvent = event; + if (!items.length) { + return; } - if (!context) { - continue; + var index = items.indexOf(event.target); + + if (event.which === 38 && index > 0) { + // up + index--; } - var dropdownMenu = context._menu; - - if (!toggles[i].classList.contains(CLASS_NAME_SHOW$1)) { - continue; + if (event.which === 40 && index < items.length - 1) { + // down + index++; } - if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.key === TAB_KEY) && dropdownMenu.contains(event.target)) { - continue; + if (! ~index) { + index = 0; } - var hideEvent = EventHandler.trigger(parent, EVENT_HIDE$1, relatedTarget); - - if (hideEvent.defaultPrevented) { - continue; - } // If this is a touch-enabled device we remove the extra - // empty mouseover listeners we added for iOS support - - - if ('ontouchstart' in document.documentElement) { - var _ref2; - - (_ref2 = []).concat.apply(_ref2, document.body.children).forEach(function (elem) { - return EventHandler.off(elem, 'mouseover', null, noop()); - }); - } - - toggles[i].setAttribute('aria-expanded', 'false'); - - if (context._popper) { - context._popper.destroy(); - } - - dropdownMenu.classList.remove(CLASS_NAME_SHOW$1); - toggles[i].classList.remove(CLASS_NAME_SHOW$1); - EventHandler.trigger(parent, EVENT_HIDDEN$1, relatedTarget); - } - }; - - Dropdown.getParentFromElement = function getParentFromElement(element) { - return getElementFromSelector(element) || element.parentNode; - }; - - Dropdown.dataApiKeydownHandler = function dataApiKeydownHandler(event) { - // If not input/textarea: - // - And not a key in REGEXP_KEYDOWN => not a dropdown command - // If input/textarea: - // - If space key => not a dropdown command - // - If key is other than escape - // - If key is not up or down => not a dropdown command - // - If trigger inside the menu => not a dropdown command - if (/input|textarea/i.test(event.target.tagName) ? event.key === SPACE_KEY || event.key !== ESCAPE_KEY && (event.key !== ARROW_DOWN_KEY && event.key !== ARROW_UP_KEY || event.target.closest(SELECTOR_MENU)) : !REGEXP_KEYDOWN.test(event.key)) { - return; - } - - event.preventDefault(); - event.stopPropagation(); - - if (this.disabled || this.classList.contains(CLASS_NAME_DISABLED)) { - return; - } - - var parent = Dropdown.getParentFromElement(this); - var isActive = this.classList.contains(CLASS_NAME_SHOW$1); - - if (event.key === ESCAPE_KEY) { - var button = this.matches(SELECTOR_DATA_TOGGLE$2) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE$2)[0]; - button.focus(); - Dropdown.clearMenus(); - return; - } - - if (!isActive || event.key === SPACE_KEY) { - Dropdown.clearMenus(); - return; - } - - var items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, parent).filter(isVisible); - - if (!items.length) { - return; - } - - var index = items.indexOf(event.target); // Up - - if (event.key === ARROW_UP_KEY && index > 0) { - index--; - } // Down - - - if (event.key === ARROW_DOWN_KEY && index < items.length - 1) { - index++; - } // index is -1 if the first keydown is an ArrowUp - - - index = index === -1 ? 0 : index; - items[index].focus(); - }; - - _createClass(Dropdown, null, [{ - key: "Default", - get: function get() { - return Default$2; + items[index].focus(); } }, { - key: "DefaultType", + key: 'VERSION', get: function get() { - return DefaultType$2; - } - }, { - key: "DATA_KEY", - get: function get() { - return DATA_KEY$4; + return VERSION; } }]); return Dropdown; - }(BaseComponent); - /** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ + })(); + $(document).on(Event.KEYDOWN_DATA_API, Selector.DATA_TOGGLE, Dropdown._dataApiKeydownHandler).on(Event.KEYDOWN_DATA_API, Selector.ROLE_MENU, Dropdown._dataApiKeydownHandler).on(Event.KEYDOWN_DATA_API, Selector.ROLE_LISTBOX, Dropdown._dataApiKeydownHandler).on(Event.CLICK_DATA_API, Dropdown._clearMenus).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, Dropdown.prototype.toggle).on(Event.CLICK_DATA_API, Selector.FORM_CHILD, function (e) { + e.stopPropagation(); + }); - EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$2, Dropdown.dataApiKeydownHandler); - EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler); - EventHandler.on(document, EVENT_CLICK_DATA_API$4, Dropdown.clearMenus); - EventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus); - EventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$2, function (event) { - event.preventDefault(); - event.stopPropagation(); - Dropdown.dropdownInterface(this, 'toggle'); - }); - EventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_FORM_CHILD, function (e) { - return e.stopPropagation(); - }); /** * ------------------------------------------------------------------------ * jQuery * ------------------------------------------------------------------------ - * add .Dropdown to jQuery only if jQuery is present */ - onDOMContentLoaded(function () { - var $ = getjQuery(); - /* istanbul ignore if */ + $.fn[NAME] = Dropdown._jQueryInterface; + $.fn[NAME].Constructor = Dropdown; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Dropdown._jQueryInterface; + }; - if ($) { - var JQUERY_NO_CONFLICT = $.fn[NAME$4]; - $.fn[NAME$4] = Dropdown.jQueryInterface; - $.fn[NAME$4].Constructor = Dropdown; + return Dropdown; +})(jQuery); - $.fn[NAME$4].noConflict = function () { - $.fn[NAME$4] = JQUERY_NO_CONFLICT; - return Dropdown.jQueryInterface; - }; - } - }); +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0-alpha.2): modal.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +var Modal = (function ($) { /** * ------------------------------------------------------------------------ @@ -2541,752 +1667,1109 @@ * ------------------------------------------------------------------------ */ - var NAME$5 = 'modal'; - var DATA_KEY$5 = 'bs.modal'; - var EVENT_KEY$5 = "." + DATA_KEY$5; - var DATA_API_KEY$5 = '.data-api'; - var ESCAPE_KEY$1 = 'Escape'; - var Default$3 = { + var NAME = 'modal'; + var VERSION = '4.0.0-alpha'; + var DATA_KEY = 'bs.modal'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + var TRANSITION_DURATION = 300; + var BACKDROP_TRANSITION_DURATION = 150; + + var Default = { backdrop: true, keyboard: true, - focus: true + focus: true, + show: true }; - var DefaultType$3 = { + + var DefaultType = { backdrop: '(boolean|string)', keyboard: 'boolean', - focus: 'boolean' + focus: 'boolean', + show: 'boolean' }; - var EVENT_HIDE$2 = "hide" + EVENT_KEY$5; - var EVENT_HIDE_PREVENTED = "hidePrevented" + EVENT_KEY$5; - var EVENT_HIDDEN$2 = "hidden" + EVENT_KEY$5; - var EVENT_SHOW$2 = "show" + EVENT_KEY$5; - var EVENT_SHOWN$2 = "shown" + EVENT_KEY$5; - var EVENT_FOCUSIN = "focusin" + EVENT_KEY$5; - var EVENT_RESIZE = "resize" + EVENT_KEY$5; - var EVENT_CLICK_DISMISS = "click.dismiss" + EVENT_KEY$5; - var EVENT_KEYDOWN_DISMISS = "keydown.dismiss" + EVENT_KEY$5; - var EVENT_MOUSEUP_DISMISS = "mouseup.dismiss" + EVENT_KEY$5; - var EVENT_MOUSEDOWN_DISMISS = "mousedown.dismiss" + EVENT_KEY$5; - var EVENT_CLICK_DATA_API$5 = "click" + EVENT_KEY$5 + DATA_API_KEY$5; - var CLASS_NAME_SCROLLBAR_MEASURER = 'modal-scrollbar-measure'; - var CLASS_NAME_BACKDROP = 'modal-backdrop'; - var CLASS_NAME_OPEN = 'modal-open'; - var CLASS_NAME_FADE = 'fade'; - var CLASS_NAME_SHOW$2 = 'show'; - var CLASS_NAME_STATIC = 'modal-static'; - var SELECTOR_DIALOG = '.modal-dialog'; - var SELECTOR_MODAL_BODY = '.modal-body'; - var SELECTOR_DATA_TOGGLE$3 = '[data-bs-toggle="modal"]'; - var SELECTOR_DATA_DISMISS = '[data-bs-dismiss="modal"]'; - var SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'; - var SELECTOR_STICKY_CONTENT = '.sticky-top'; + + var Event = { + HIDE: 'hide' + EVENT_KEY, + HIDDEN: 'hidden' + EVENT_KEY, + SHOW: 'show' + EVENT_KEY, + SHOWN: 'shown' + EVENT_KEY, + FOCUSIN: 'focusin' + EVENT_KEY, + RESIZE: 'resize' + EVENT_KEY, + CLICK_DISMISS: 'click.dismiss' + EVENT_KEY, + KEYDOWN_DISMISS: 'keydown.dismiss' + EVENT_KEY, + MOUSEUP_DISMISS: 'mouseup.dismiss' + EVENT_KEY, + MOUSEDOWN_DISMISS: 'mousedown.dismiss' + EVENT_KEY, + CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY + }; + + var ClassName = { + SCROLLBAR_MEASURER: 'modal-scrollbar-measure', + BACKDROP: 'modal-backdrop', + OPEN: 'modal-open', + FADE: 'fade', + IN: 'in' + }; + + var Selector = { + DIALOG: '.modal-dialog', + DATA_TOGGLE: '[data-toggle="modal"]', + DATA_DISMISS: '[data-dismiss="modal"]', + FIXED_CONTENT: '.navbar-fixed-top, .navbar-fixed-bottom, .is-fixed' + }; + /** * ------------------------------------------------------------------------ * Class Definition * ------------------------------------------------------------------------ */ - var Modal = /*#__PURE__*/function (_BaseComponent) { - _inheritsLoose(Modal, _BaseComponent); - + var Modal = (function () { function Modal(element, config) { - var _this; + _classCallCheck(this, Modal); - _this = _BaseComponent.call(this, element) || this; - _this._config = _this._getConfig(config); - _this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, element); - _this._backdrop = null; - _this._isShown = false; - _this._isBodyOverflowing = false; - _this._ignoreBackdropClick = false; - _this._isTransitioning = false; - _this._scrollbarWidth = 0; - return _this; - } // Getters - - - var _proto = Modal.prototype; - - // Public - _proto.toggle = function toggle(relatedTarget) { - return this._isShown ? this.hide() : this.show(relatedTarget); - }; - - _proto.show = function show(relatedTarget) { - var _this2 = this; - - if (this._isShown || this._isTransitioning) { - return; - } - - if (this._element.classList.contains(CLASS_NAME_FADE)) { - this._isTransitioning = true; - } - - var showEvent = EventHandler.trigger(this._element, EVENT_SHOW$2, { - relatedTarget: relatedTarget - }); - - if (this._isShown || showEvent.defaultPrevented) { - return; - } - - this._isShown = true; - - this._checkScrollbar(); - - this._setScrollbar(); - - this._adjustDialog(); - - this._setEscapeEvent(); - - this._setResizeEvent(); - - EventHandler.on(this._element, EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, function (event) { - return _this2.hide(event); - }); - EventHandler.on(this._dialog, EVENT_MOUSEDOWN_DISMISS, function () { - EventHandler.one(_this2._element, EVENT_MOUSEUP_DISMISS, function (event) { - if (event.target === _this2._element) { - _this2._ignoreBackdropClick = true; - } - }); - }); - - this._showBackdrop(function () { - return _this2._showElement(relatedTarget); - }); - }; - - _proto.hide = function hide(event) { - var _this3 = this; - - if (event) { - event.preventDefault(); - } - - if (!this._isShown || this._isTransitioning) { - return; - } - - var hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$2); - - if (hideEvent.defaultPrevented) { - return; - } - - this._isShown = false; - - var transition = this._element.classList.contains(CLASS_NAME_FADE); - - if (transition) { - this._isTransitioning = true; - } - - this._setEscapeEvent(); - - this._setResizeEvent(); - - EventHandler.off(document, EVENT_FOCUSIN); - - this._element.classList.remove(CLASS_NAME_SHOW$2); - - EventHandler.off(this._element, EVENT_CLICK_DISMISS); - EventHandler.off(this._dialog, EVENT_MOUSEDOWN_DISMISS); - - if (transition) { - var transitionDuration = getTransitionDurationFromElement(this._element); - EventHandler.one(this._element, TRANSITION_END, function (event) { - return _this3._hideModal(event); - }); - emulateTransitionEnd(this._element, transitionDuration); - } else { - this._hideModal(); - } - }; - - _proto.dispose = function dispose() { - [window, this._element, this._dialog].forEach(function (htmlElement) { - return EventHandler.off(htmlElement, EVENT_KEY$5); - }); - - _BaseComponent.prototype.dispose.call(this); - /** - * `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API` - * Do not move `document` in `htmlElements` array - * It will remove `EVENT_CLICK_DATA_API` event that should remain - */ - - - EventHandler.off(document, EVENT_FOCUSIN); - this._config = null; - this._dialog = null; + this._config = this._getConfig(config); + this._element = element; + this._dialog = $(element).find(Selector.DIALOG)[0]; this._backdrop = null; - this._isShown = null; - this._isBodyOverflowing = null; - this._ignoreBackdropClick = null; - this._isTransitioning = null; - this._scrollbarWidth = null; - }; + this._isShown = false; + this._isBodyOverflowing = false; + this._ignoreBackdropClick = false; + this._originalBodyPadding = 0; + this._scrollbarWidth = 0; + } - _proto.handleUpdate = function handleUpdate() { - this._adjustDialog(); - } // Private - ; + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ - _proto._getConfig = function _getConfig(config) { - config = _extends({}, Default$3, config); - typeCheckConfig(NAME$5, config, DefaultType$3); - return config; - }; + // getters - _proto._showElement = function _showElement(relatedTarget) { - var _this4 = this; + _createClass(Modal, [{ + key: 'toggle', - var transition = this._element.classList.contains(CLASS_NAME_FADE); + // public - var modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog); - - if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) { - // Don't move modal's DOM position - document.body.appendChild(this._element); + value: function toggle(relatedTarget) { + return this._isShown ? this.hide() : this.show(relatedTarget); } + }, { + key: 'show', + value: function show(relatedTarget) { + var _this7 = this; - 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; - - if (modalBody) { - modalBody.scrollTop = 0; - } - - if (transition) { - reflow(this._element); - } - - this._element.classList.add(CLASS_NAME_SHOW$2); - - if (this._config.focus) { - this._enforceFocus(); - } - - var transitionComplete = function transitionComplete() { - if (_this4._config.focus) { - _this4._element.focus(); - } - - _this4._isTransitioning = false; - EventHandler.trigger(_this4._element, EVENT_SHOWN$2, { + var showEvent = $.Event(Event.SHOW, { relatedTarget: relatedTarget }); - }; - if (transition) { - var transitionDuration = getTransitionDurationFromElement(this._dialog); - EventHandler.one(this._dialog, TRANSITION_END, transitionComplete); - emulateTransitionEnd(this._dialog, transitionDuration); - } else { - transitionComplete(); - } - }; + $(this._element).trigger(showEvent); - _proto._enforceFocus = function _enforceFocus() { - var _this5 = this; - - EventHandler.off(document, EVENT_FOCUSIN); // guard against infinite focus loop - - EventHandler.on(document, EVENT_FOCUSIN, function (event) { - if (document !== event.target && _this5._element !== event.target && !_this5._element.contains(event.target)) { - _this5._element.focus(); - } - }); - }; - - _proto._setEscapeEvent = function _setEscapeEvent() { - var _this6 = this; - - if (this._isShown) { - EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, function (event) { - if (_this6._config.keyboard && event.key === ESCAPE_KEY$1) { - event.preventDefault(); - - _this6.hide(); - } else if (!_this6._config.keyboard && event.key === ESCAPE_KEY$1) { - _this6._triggerBackdropTransition(); - } - }); - } else { - EventHandler.off(this._element, EVENT_KEYDOWN_DISMISS); - } - }; - - _proto._setResizeEvent = function _setResizeEvent() { - var _this7 = this; - - if (this._isShown) { - EventHandler.on(window, EVENT_RESIZE, function () { - return _this7._adjustDialog(); - }); - } else { - EventHandler.off(window, EVENT_RESIZE); - } - }; - - _proto._hideModal = function _hideModal() { - var _this8 = this; - - this._element.style.display = 'none'; - - this._element.setAttribute('aria-hidden', true); - - this._element.removeAttribute('aria-modal'); - - this._element.removeAttribute('role'); - - this._isTransitioning = false; - - this._showBackdrop(function () { - document.body.classList.remove(CLASS_NAME_OPEN); - - _this8._resetAdjustments(); - - _this8._resetScrollbar(); - - EventHandler.trigger(_this8._element, EVENT_HIDDEN$2); - }); - }; - - _proto._removeBackdrop = function _removeBackdrop() { - this._backdrop.parentNode.removeChild(this._backdrop); - - this._backdrop = null; - }; - - _proto._showBackdrop = function _showBackdrop(callback) { - var _this9 = this; - - var animate = this._element.classList.contains(CLASS_NAME_FADE) ? CLASS_NAME_FADE : ''; - - if (this._isShown && this._config.backdrop) { - this._backdrop = document.createElement('div'); - this._backdrop.className = CLASS_NAME_BACKDROP; - - if (animate) { - this._backdrop.classList.add(animate); - } - - document.body.appendChild(this._backdrop); - EventHandler.on(this._element, EVENT_CLICK_DISMISS, function (event) { - if (_this9._ignoreBackdropClick) { - _this9._ignoreBackdropClick = false; - return; - } - - if (event.target !== event.currentTarget) { - return; - } - - if (_this9._config.backdrop === 'static') { - _this9._triggerBackdropTransition(); - } else { - _this9.hide(); - } - }); - - if (animate) { - reflow(this._backdrop); - } - - this._backdrop.classList.add(CLASS_NAME_SHOW$2); - - if (!animate) { - callback(); + if (this._isShown || showEvent.isDefaultPrevented()) { return; } - var backdropTransitionDuration = getTransitionDurationFromElement(this._backdrop); - EventHandler.one(this._backdrop, TRANSITION_END, callback); - emulateTransitionEnd(this._backdrop, backdropTransitionDuration); - } else if (!this._isShown && this._backdrop) { - this._backdrop.classList.remove(CLASS_NAME_SHOW$2); + this._isShown = true; - var callbackRemove = function callbackRemove() { - _this9._removeBackdrop(); + this._checkScrollbar(); + this._setScrollbar(); - callback(); - }; + $(document.body).addClass(ClassName.OPEN); - if (this._element.classList.contains(CLASS_NAME_FADE)) { - var _backdropTransitionDuration = getTransitionDurationFromElement(this._backdrop); + this._setEscapeEvent(); + this._setResizeEvent(); - EventHandler.one(this._backdrop, TRANSITION_END, callbackRemove); - emulateTransitionEnd(this._backdrop, _backdropTransitionDuration); - } else { - callbackRemove(); - } - } else { - callback(); - } - }; + $(this._element).on(Event.CLICK_DISMISS, Selector.DATA_DISMISS, $.proxy(this.hide, this)); - _proto._triggerBackdropTransition = function _triggerBackdropTransition() { - var _this10 = this; - - var hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED); - - if (hideEvent.defaultPrevented) { - return; - } - - var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; - - if (!isModalOverflowing) { - this._element.style.overflowY = 'hidden'; - } - - this._element.classList.add(CLASS_NAME_STATIC); - - var modalTransitionDuration = getTransitionDurationFromElement(this._dialog); - EventHandler.off(this._element, TRANSITION_END); - EventHandler.one(this._element, TRANSITION_END, function () { - _this10._element.classList.remove(CLASS_NAME_STATIC); - - if (!isModalOverflowing) { - EventHandler.one(_this10._element, TRANSITION_END, function () { - _this10._element.style.overflowY = ''; + $(this._dialog).on(Event.MOUSEDOWN_DISMISS, function () { + $(_this7._element).one(Event.MOUSEUP_DISMISS, function (event) { + if ($(event.target).is(_this7._element)) { + _this7._ignoreBackdropClick = true; + } }); - emulateTransitionEnd(_this10._element, modalTransitionDuration); - } - }); - emulateTransitionEnd(this._element, modalTransitionDuration); + }); - this._element.focus(); - } // ---------------------------------------------------------------------- - // the following methods are used to handle overflowing modals - // ---------------------------------------------------------------------- - ; - - _proto._adjustDialog = function _adjustDialog() { - var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; - - if (!this._isBodyOverflowing && isModalOverflowing && !isRTL || this._isBodyOverflowing && !isModalOverflowing && isRTL) { - this._element.style.paddingLeft = this._scrollbarWidth + "px"; - } - - if (this._isBodyOverflowing && !isModalOverflowing && !isRTL || !this._isBodyOverflowing && isModalOverflowing && isRTL) { - this._element.style.paddingRight = this._scrollbarWidth + "px"; - } - }; - - _proto._resetAdjustments = function _resetAdjustments() { - this._element.style.paddingLeft = ''; - this._element.style.paddingRight = ''; - }; - - _proto._checkScrollbar = function _checkScrollbar() { - var rect = document.body.getBoundingClientRect(); - this._isBodyOverflowing = Math.round(rect.left + rect.right) < window.innerWidth; - this._scrollbarWidth = this._getScrollbarWidth(); - }; - - _proto._setScrollbar = function _setScrollbar() { - var _this11 = this; - - if (this._isBodyOverflowing) { - // Note: DOMNode.style.paddingRight returns the actual value or '' if not set - // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set - // Adjust fixed content padding - SelectorEngine.find(SELECTOR_FIXED_CONTENT).forEach(function (element) { - var actualPadding = element.style.paddingRight; - var calculatedPadding = window.getComputedStyle(element)['padding-right']; - Manipulator.setDataAttribute(element, 'padding-right', actualPadding); - element.style.paddingRight = Number.parseFloat(calculatedPadding) + _this11._scrollbarWidth + "px"; - }); // Adjust sticky content margin - - SelectorEngine.find(SELECTOR_STICKY_CONTENT).forEach(function (element) { - var actualMargin = element.style.marginRight; - var calculatedMargin = window.getComputedStyle(element)['margin-right']; - Manipulator.setDataAttribute(element, 'margin-right', actualMargin); - element.style.marginRight = Number.parseFloat(calculatedMargin) - _this11._scrollbarWidth + "px"; - }); // Adjust body padding - - var actualPadding = document.body.style.paddingRight; - var calculatedPadding = window.getComputedStyle(document.body)['padding-right']; - Manipulator.setDataAttribute(document.body, 'padding-right', actualPadding); - document.body.style.paddingRight = Number.parseFloat(calculatedPadding) + this._scrollbarWidth + "px"; - } - - document.body.classList.add(CLASS_NAME_OPEN); - }; - - _proto._resetScrollbar = function _resetScrollbar() { - // Restore fixed content padding - SelectorEngine.find(SELECTOR_FIXED_CONTENT).forEach(function (element) { - var padding = Manipulator.getDataAttribute(element, 'padding-right'); - - if (typeof padding !== 'undefined') { - Manipulator.removeDataAttribute(element, 'padding-right'); - element.style.paddingRight = padding; - } - }); // Restore sticky content and navbar-toggler margin - - SelectorEngine.find("" + SELECTOR_STICKY_CONTENT).forEach(function (element) { - var margin = Manipulator.getDataAttribute(element, 'margin-right'); - - if (typeof margin !== 'undefined') { - Manipulator.removeDataAttribute(element, 'margin-right'); - element.style.marginRight = margin; - } - }); // Restore body padding - - var padding = Manipulator.getDataAttribute(document.body, 'padding-right'); - - if (typeof padding === 'undefined') { - document.body.style.paddingRight = ''; - } else { - Manipulator.removeDataAttribute(document.body, 'padding-right'); - document.body.style.paddingRight = padding; - } - }; - - _proto._getScrollbarWidth = function _getScrollbarWidth() { - // thx d.walsh - var scrollDiv = document.createElement('div'); - scrollDiv.className = CLASS_NAME_SCROLLBAR_MEASURER; - document.body.appendChild(scrollDiv); - var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth; - document.body.removeChild(scrollDiv); - return scrollbarWidth; - } // Static - ; - - Modal.jQueryInterface = function jQueryInterface(config, relatedTarget) { - return this.each(function () { - var data = Data.getData(this, DATA_KEY$5); - - var _config = _extends({}, Default$3, Manipulator.getDataAttributes(this), typeof config === 'object' && config ? config : {}); - - if (!data) { - data = new Modal(this, _config); - } - - if (typeof config === 'string') { - if (typeof data[config] === 'undefined') { - throw new TypeError("No method named \"" + config + "\""); - } - - data[config](relatedTarget); - } - }); - }; - - _createClass(Modal, null, [{ - key: "Default", - get: function get() { - return Default$3; + this._showBackdrop($.proxy(this._showElement, this, relatedTarget)); } }, { - key: "DATA_KEY", + key: 'hide', + value: function hide(event) { + if (event) { + event.preventDefault(); + } + + var hideEvent = $.Event(Event.HIDE); + + $(this._element).trigger(hideEvent); + + if (!this._isShown || hideEvent.isDefaultPrevented()) { + return; + } + + this._isShown = false; + + this._setEscapeEvent(); + this._setResizeEvent(); + + $(document).off(Event.FOCUSIN); + + $(this._element).removeClass(ClassName.IN); + + $(this._element).off(Event.CLICK_DISMISS); + $(this._dialog).off(Event.MOUSEDOWN_DISMISS); + + if (Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE)) { + + $(this._element).one(Util.TRANSITION_END, $.proxy(this._hideModal, this)).emulateTransitionEnd(TRANSITION_DURATION); + } else { + this._hideModal(); + } + } + }, { + key: 'dispose', + value: function dispose() { + $.removeData(this._element, DATA_KEY); + + $(window).off(EVENT_KEY); + $(document).off(EVENT_KEY); + $(this._element).off(EVENT_KEY); + $(this._backdrop).off(EVENT_KEY); + + this._config = null; + this._element = null; + this._dialog = null; + this._backdrop = null; + this._isShown = null; + this._isBodyOverflowing = null; + this._ignoreBackdropClick = null; + this._originalBodyPadding = null; + this._scrollbarWidth = null; + } + + // private + + }, { + key: '_getConfig', + value: function _getConfig(config) { + config = $.extend({}, Default, config); + Util.typeCheckConfig(NAME, config, DefaultType); + return config; + } + }, { + key: '_showElement', + value: function _showElement(relatedTarget) { + var _this8 = this; + + var transition = Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE); + + if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) { + // don't move modals dom position + document.body.appendChild(this._element); + } + + this._element.style.display = 'block'; + this._element.scrollTop = 0; + + if (transition) { + Util.reflow(this._element); + } + + $(this._element).addClass(ClassName.IN); + + if (this._config.focus) { + this._enforceFocus(); + } + + var shownEvent = $.Event(Event.SHOWN, { + relatedTarget: relatedTarget + }); + + var transitionComplete = function transitionComplete() { + if (_this8._config.focus) { + _this8._element.focus(); + } + $(_this8._element).trigger(shownEvent); + }; + + if (transition) { + $(this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(TRANSITION_DURATION); + } else { + transitionComplete(); + } + } + }, { + key: '_enforceFocus', + value: function _enforceFocus() { + var _this9 = this; + + $(document).off(Event.FOCUSIN) // guard against infinite focus loop + .on(Event.FOCUSIN, function (event) { + if (_this9._element !== event.target && !$(_this9._element).has(event.target).length) { + _this9._element.focus(); + } + }); + } + }, { + key: '_setEscapeEvent', + value: function _setEscapeEvent() { + var _this10 = this; + + if (this._isShown && this._config.keyboard) { + $(this._element).on(Event.KEYDOWN_DISMISS, function (event) { + if (event.which === 27) { + _this10.hide(); + } + }); + } else if (!this._isShown) { + $(this._element).off(Event.KEYDOWN_DISMISS); + } + } + }, { + key: '_setResizeEvent', + value: function _setResizeEvent() { + if (this._isShown) { + $(window).on(Event.RESIZE, $.proxy(this._handleUpdate, this)); + } else { + $(window).off(Event.RESIZE); + } + } + }, { + key: '_hideModal', + value: function _hideModal() { + var _this11 = this; + + this._element.style.display = 'none'; + this._showBackdrop(function () { + $(document.body).removeClass(ClassName.OPEN); + _this11._resetAdjustments(); + _this11._resetScrollbar(); + $(_this11._element).trigger(Event.HIDDEN); + }); + } + }, { + key: '_removeBackdrop', + value: function _removeBackdrop() { + if (this._backdrop) { + $(this._backdrop).remove(); + this._backdrop = null; + } + } + }, { + key: '_showBackdrop', + value: function _showBackdrop(callback) { + var _this12 = this; + + var animate = $(this._element).hasClass(ClassName.FADE) ? ClassName.FADE : ''; + + if (this._isShown && this._config.backdrop) { + var doAnimate = Util.supportsTransitionEnd() && animate; + + this._backdrop = document.createElement('div'); + this._backdrop.className = ClassName.BACKDROP; + + if (animate) { + $(this._backdrop).addClass(animate); + } + + $(this._backdrop).appendTo(document.body); + + $(this._element).on(Event.CLICK_DISMISS, function (event) { + if (_this12._ignoreBackdropClick) { + _this12._ignoreBackdropClick = false; + return; + } + if (event.target !== event.currentTarget) { + return; + } + if (_this12._config.backdrop === 'static') { + _this12._element.focus(); + } else { + _this12.hide(); + } + }); + + if (doAnimate) { + Util.reflow(this._backdrop); + } + + $(this._backdrop).addClass(ClassName.IN); + + if (!callback) { + return; + } + + if (!doAnimate) { + callback(); + return; + } + + $(this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(BACKDROP_TRANSITION_DURATION); + } else if (!this._isShown && this._backdrop) { + $(this._backdrop).removeClass(ClassName.IN); + + var callbackRemove = function callbackRemove() { + _this12._removeBackdrop(); + if (callback) { + callback(); + } + }; + + if (Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE)) { + $(this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(BACKDROP_TRANSITION_DURATION); + } else { + callbackRemove(); + } + } else if (callback) { + callback(); + } + } + + // ---------------------------------------------------------------------- + // the following methods are used to handle overflowing modals + // todo (fat): these should probably be refactored out of modal.js + // ---------------------------------------------------------------------- + + }, { + key: '_handleUpdate', + value: function _handleUpdate() { + this._adjustDialog(); + } + }, { + key: '_adjustDialog', + value: function _adjustDialog() { + var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; + + if (!this._isBodyOverflowing && isModalOverflowing) { + this._element.style.paddingLeft = this._scrollbarWidth + 'px'; + } + + if (this._isBodyOverflowing && !isModalOverflowing) { + this._element.style.paddingRight = this._scrollbarWidth + 'px~'; + } + } + }, { + key: '_resetAdjustments', + value: function _resetAdjustments() { + this._element.style.paddingLeft = ''; + this._element.style.paddingRight = ''; + } + }, { + key: '_checkScrollbar', + value: function _checkScrollbar() { + var fullWindowWidth = window.innerWidth; + if (!fullWindowWidth) { + // workaround for missing window.innerWidth in IE8 + var documentElementRect = document.documentElement.getBoundingClientRect(); + fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left); + } + this._isBodyOverflowing = document.body.clientWidth < fullWindowWidth; + this._scrollbarWidth = this._getScrollbarWidth(); + } + }, { + key: '_setScrollbar', + value: function _setScrollbar() { + var bodyPadding = parseInt($(Selector.FIXED_CONTENT).css('padding-right') || 0, 10); + + this._originalBodyPadding = document.body.style.paddingRight || ''; + + if (this._isBodyOverflowing) { + document.body.style.paddingRight = bodyPadding + this._scrollbarWidth + 'px'; + } + } + }, { + key: '_resetScrollbar', + value: function _resetScrollbar() { + document.body.style.paddingRight = this._originalBodyPadding; + } + }, { + key: '_getScrollbarWidth', + value: function _getScrollbarWidth() { + // thx d.walsh + var scrollDiv = document.createElement('div'); + scrollDiv.className = ClassName.SCROLLBAR_MEASURER; + document.body.appendChild(scrollDiv); + var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth; + document.body.removeChild(scrollDiv); + return scrollbarWidth; + } + + // static + + }], [{ + key: '_jQueryInterface', + value: function _jQueryInterface(config, relatedTarget) { + return this.each(function () { + var data = $(this).data(DATA_KEY); + var _config = $.extend({}, Modal.Default, $(this).data(), typeof config === 'object' && config); + + if (!data) { + data = new Modal(this, _config); + $(this).data(DATA_KEY, data); + } + + if (typeof config === 'string') { + if (data[config] === undefined) { + throw new Error('No method named "' + config + '"'); + } + data[config](relatedTarget); + } else if (_config.show) { + data.show(relatedTarget); + } + }); + } + }, { + key: 'VERSION', get: function get() { - return DATA_KEY$5; + return VERSION; + } + }, { + key: 'Default', + get: function get() { + return Default; } }]); return Modal; - }(BaseComponent); - /** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ + })(); + $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) { + var _this13 = this; - EventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_TOGGLE$3, function (event) { - var _this12 = this; + var target = undefined; + var selector = Util.getSelectorFromElement(this); - var target = getElementFromSelector(this); + if (selector) { + target = $(selector)[0]; + } - if (this.tagName === 'A' || this.tagName === 'AREA') { + var config = $(target).data(DATA_KEY) ? 'toggle' : $.extend({}, $(target).data(), $(this).data()); + + if (this.tagName === 'A') { event.preventDefault(); } - EventHandler.one(target, EVENT_SHOW$2, function (showEvent) { - if (showEvent.defaultPrevented) { + var $target = $(target).one(Event.SHOW, function (showEvent) { + if (showEvent.isDefaultPrevented()) { // only register focus restorer if modal will actually get shown return; } - EventHandler.one(target, EVENT_HIDDEN$2, function () { - if (isVisible(_this12)) { - _this12.focus(); + $target.one(Event.HIDDEN, function () { + if ($(_this13).is(':visible')) { + _this13.focus(); } }); }); - var data = Data.getData(target, DATA_KEY$5); - if (!data) { - var config = _extends({}, Manipulator.getDataAttributes(target), Manipulator.getDataAttributes(this)); - - data = new Modal(target, config); - } - - data.show(this); + Modal._jQueryInterface.call($(target), config, this); }); + /** * ------------------------------------------------------------------------ * jQuery * ------------------------------------------------------------------------ - * add .Modal to jQuery only if jQuery is present */ - onDOMContentLoaded(function () { - var $ = getjQuery(); - /* istanbul ignore if */ + $.fn[NAME] = Modal._jQueryInterface; + $.fn[NAME].Constructor = Modal; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Modal._jQueryInterface; + }; - if ($) { - var JQUERY_NO_CONFLICT = $.fn[NAME$5]; - $.fn[NAME$5] = Modal.jQueryInterface; - $.fn[NAME$5].Constructor = Modal; + return Modal; +})(jQuery); - $.fn[NAME$5].noConflict = function () { - $.fn[NAME$5] = JQUERY_NO_CONFLICT; - return Modal.jQueryInterface; - }; +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0-alpha.2): scrollspy.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +var ScrollSpy = (function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'scrollspy'; + var VERSION = '4.0.0-alpha'; + var DATA_KEY = 'bs.scrollspy'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + + var Default = { + offset: 10, + method: 'auto', + target: '' + }; + + var DefaultType = { + offset: 'number', + method: 'string', + target: '(string|element)' + }; + + var Event = { + ACTIVATE: 'activate' + EVENT_KEY, + SCROLL: 'scroll' + EVENT_KEY, + LOAD_DATA_API: 'load' + EVENT_KEY + DATA_API_KEY + }; + + var ClassName = { + DROPDOWN_ITEM: 'dropdown-item', + DROPDOWN_MENU: 'dropdown-menu', + NAV_LINK: 'nav-link', + NAV: 'nav', + ACTIVE: 'active' + }; + + var Selector = { + DATA_SPY: '[data-spy="scroll"]', + ACTIVE: '.active', + LIST_ITEM: '.list-item', + LI: 'li', + LI_DROPDOWN: 'li.dropdown', + NAV_LINKS: '.nav-link', + DROPDOWN: '.dropdown', + DROPDOWN_ITEMS: '.dropdown-item', + DROPDOWN_TOGGLE: '.dropdown-toggle' + }; + + var OffsetMethod = { + OFFSET: 'offset', + POSITION: 'position' + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var ScrollSpy = (function () { + function ScrollSpy(element, config) { + _classCallCheck(this, ScrollSpy); + + this._element = element; + this._scrollElement = element.tagName === 'BODY' ? window : element; + this._config = this._getConfig(config); + this._selector = this._config.target + ' ' + Selector.NAV_LINKS + ',' + (this._config.target + ' ' + Selector.DROPDOWN_ITEMS); + this._offsets = []; + this._targets = []; + this._activeTarget = null; + this._scrollHeight = 0; + + $(this._scrollElement).on(Event.SCROLL, $.proxy(this._process, this)); + + this.refresh(); + this._process(); + } + + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + // getters + + _createClass(ScrollSpy, [{ + key: 'refresh', + + // public + + value: function refresh() { + var _this14 = this; + + var autoMethod = this._scrollElement !== this._scrollElement.window ? OffsetMethod.POSITION : OffsetMethod.OFFSET; + + var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method; + + var offsetBase = offsetMethod === OffsetMethod.POSITION ? this._getScrollTop() : 0; + + this._offsets = []; + this._targets = []; + + this._scrollHeight = this._getScrollHeight(); + + var targets = $.makeArray($(this._selector)); + + targets.map(function (element) { + var target = undefined; + var targetSelector = Util.getSelectorFromElement(element); + + if (targetSelector) { + target = $(targetSelector)[0]; + } + + if (target && (target.offsetWidth || target.offsetHeight)) { + // todo (fat): remove sketch reliance on jQuery position/offset + return [$(target)[offsetMethod]().top + offsetBase, targetSelector]; + } + }).filter(function (item) { + return item; + }).sort(function (a, b) { + return a[0] - b[0]; + }).forEach(function (item) { + _this14._offsets.push(item[0]); + _this14._targets.push(item[1]); + }); + } + }, { + key: 'dispose', + value: function dispose() { + $.removeData(this._element, DATA_KEY); + $(this._scrollElement).off(EVENT_KEY); + + this._element = null; + this._scrollElement = null; + this._config = null; + this._selector = null; + this._offsets = null; + this._targets = null; + this._activeTarget = null; + this._scrollHeight = null; + } + + // private + + }, { + key: '_getConfig', + value: function _getConfig(config) { + config = $.extend({}, Default, config); + + if (typeof config.target !== 'string') { + var id = $(config.target).attr('id'); + if (!id) { + id = Util.getUID(NAME); + $(config.target).attr('id', id); + } + config.target = '#' + id; + } + + Util.typeCheckConfig(NAME, config, DefaultType); + + return config; + } + }, { + key: '_getScrollTop', + value: function _getScrollTop() { + return this._scrollElement === window ? this._scrollElement.scrollY : this._scrollElement.scrollTop; + } + }, { + key: '_getScrollHeight', + value: function _getScrollHeight() { + return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight); + } + }, { + key: '_process', + value: function _process() { + var scrollTop = this._getScrollTop() + this._config.offset; + var scrollHeight = this._getScrollHeight(); + var maxScroll = this._config.offset + scrollHeight - this._scrollElement.offsetHeight; + + if (this._scrollHeight !== scrollHeight) { + this.refresh(); + } + + if (scrollTop >= maxScroll) { + var target = this._targets[this._targets.length - 1]; + + if (this._activeTarget !== target) { + this._activate(target); + } + } + + if (this._activeTarget && scrollTop < this._offsets[0]) { + this._activeTarget = null; + this._clear(); + return; + } + + for (var i = this._offsets.length; i--;) { + var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (this._offsets[i + 1] === undefined || scrollTop < this._offsets[i + 1]); + + if (isActiveTarget) { + this._activate(this._targets[i]); + } + } + } + }, { + key: '_activate', + value: function _activate(target) { + this._activeTarget = target; + + this._clear(); + + var queries = this._selector.split(','); + queries = queries.map(function (selector) { + return selector + '[data-target="' + target + '"],' + (selector + '[href="' + target + '"]'); + }); + + var $link = $(queries.join(',')); + + if ($link.hasClass(ClassName.DROPDOWN_ITEM)) { + $link.closest(Selector.DROPDOWN).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE); + $link.addClass(ClassName.ACTIVE); + } else { + // todo (fat) this is kinda sus… + // recursively add actives to tested nav-links + $link.parents(Selector.LI).find(Selector.NAV_LINKS).addClass(ClassName.ACTIVE); + } + + $(this._scrollElement).trigger(Event.ACTIVATE, { + relatedTarget: target + }); + } + }, { + key: '_clear', + value: function _clear() { + $(this._selector).filter(Selector.ACTIVE).removeClass(ClassName.ACTIVE); + } + + // static + + }], [{ + key: '_jQueryInterface', + value: function _jQueryInterface(config) { + return this.each(function () { + var data = $(this).data(DATA_KEY); + var _config = typeof config === 'object' && config || null; + + if (!data) { + data = new ScrollSpy(this, _config); + $(this).data(DATA_KEY, data); + } + + if (typeof config === 'string') { + if (data[config] === undefined) { + throw new Error('No method named "' + config + '"'); + } + data[config](); + } + }); + } + }, { + key: 'VERSION', + get: function get() { + return VERSION; + } + }, { + key: 'Default', + get: function get() { + return Default; + } + }]); + + return ScrollSpy; + })(); + + $(window).on(Event.LOAD_DATA_API, function () { + var scrollSpys = $.makeArray($(Selector.DATA_SPY)); + + for (var i = scrollSpys.length; i--;) { + var $spy = $(scrollSpys[i]); + ScrollSpy._jQueryInterface.call($spy, $spy.data()); } }); /** - * -------------------------------------------------------------------------- - * Bootstrap (v5.0.0-beta1): util/sanitizer.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ - var uriAttrs = new Set(['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']); - var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i; - /** - * A pattern that recognizes a commonly useful subset of URLs that are safe. - * - * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ */ - var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/gi; - /** - * A pattern that matches safe data URLs. Only matches image, video and audio types. - * - * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts - */ - - var DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i; - - var allowedAttribute = function allowedAttribute(attr, allowedAttributeList) { - var attrName = attr.nodeName.toLowerCase(); - - if (allowedAttributeList.includes(attrName)) { - if (uriAttrs.has(attrName)) { - return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN)); - } - - return true; - } - - var regExp = allowedAttributeList.filter(function (attrRegex) { - return attrRegex instanceof RegExp; - }); // Check if a regular expression validates the attribute. - - for (var i = 0, len = regExp.length; i < len; i++) { - if (attrName.match(regExp[i])) { - return true; - } - } - - return false; + $.fn[NAME] = ScrollSpy._jQueryInterface; + $.fn[NAME].Constructor = ScrollSpy; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return ScrollSpy._jQueryInterface; }; - var DefaultAllowlist = { - // Global attributes allowed on any supplied element below. - '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN], - a: ['target', 'href', 'title', 'rel'], - area: [], - b: [], - br: [], - col: [], - code: [], - div: [], - em: [], - hr: [], - h1: [], - h2: [], - h3: [], - h4: [], - h5: [], - h6: [], - i: [], - img: ['src', 'srcset', 'alt', 'title', 'width', 'height'], - li: [], - ol: [], - p: [], - pre: [], - s: [], - small: [], - span: [], - sub: [], - sup: [], - strong: [], - u: [], - ul: [] + return ScrollSpy; +})(jQuery); + +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0-alpha.2): tab.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +var Tab = (function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'tab'; + var VERSION = '4.0.0-alpha'; + var DATA_KEY = 'bs.tab'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + var TRANSITION_DURATION = 150; + + var Event = { + HIDE: 'hide' + EVENT_KEY, + HIDDEN: 'hidden' + EVENT_KEY, + SHOW: 'show' + EVENT_KEY, + SHOWN: 'shown' + EVENT_KEY, + CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY }; - function sanitizeHtml(unsafeHtml, allowList, sanitizeFn) { - var _ref; - if (!unsafeHtml.length) { - return unsafeHtml; + var ClassName = { + DROPDOWN_MENU: 'dropdown-menu', + ACTIVE: 'active', + FADE: 'fade', + IN: 'in' + }; + + var Selector = { + A: 'a', + LI: 'li', + DROPDOWN: '.dropdown', + UL: 'ul:not(.dropdown-menu)', + FADE_CHILD: '> .nav-item .fade, > .fade', + ACTIVE: '.active', + ACTIVE_CHILD: '> .nav-item > .active, > .active', + DATA_TOGGLE: '[data-toggle="tab"], [data-toggle="pill"]', + DROPDOWN_TOGGLE: '.dropdown-toggle', + DROPDOWN_ACTIVE_CHILD: '> .dropdown-menu .active' + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Tab = (function () { + function Tab(element) { + _classCallCheck(this, Tab); + + this._element = element; } - if (sanitizeFn && typeof sanitizeFn === 'function') { - return sanitizeFn(unsafeHtml); - } + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ - var domParser = new window.DOMParser(); - var createdDocument = domParser.parseFromString(unsafeHtml, 'text/html'); - var allowlistKeys = Object.keys(allowList); + // getters - var elements = (_ref = []).concat.apply(_ref, createdDocument.body.querySelectorAll('*')); + _createClass(Tab, [{ + key: 'show', - var _loop = function _loop(i, len) { - var _ref2; + // public - var el = elements[i]; - var elName = el.nodeName.toLowerCase(); + value: function show() { + var _this15 = this; - if (!allowlistKeys.includes(elName)) { - el.parentNode.removeChild(el); - return "continue"; - } - - var attributeList = (_ref2 = []).concat.apply(_ref2, el.attributes); - - var allowedAttributes = [].concat(allowList['*'] || [], allowList[elName] || []); - attributeList.forEach(function (attr) { - if (!allowedAttribute(attr, allowedAttributes)) { - el.removeAttribute(attr.nodeName); + if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && $(this._element).hasClass(ClassName.ACTIVE)) { + return; } - }); - }; - for (var i = 0, len = elements.length; i < len; i++) { - var _ret = _loop(i); + var target = undefined; + var previous = undefined; + var ulElement = $(this._element).closest(Selector.UL)[0]; + var selector = Util.getSelectorFromElement(this._element); - if (_ret === "continue") continue; - } + if (ulElement) { + previous = $.makeArray($(ulElement).find(Selector.ACTIVE)); + previous = previous[previous.length - 1]; + } - return createdDocument.body.innerHTML; + var hideEvent = $.Event(Event.HIDE, { + relatedTarget: this._element + }); + + var showEvent = $.Event(Event.SHOW, { + relatedTarget: previous + }); + + if (previous) { + $(previous).trigger(hideEvent); + } + + $(this._element).trigger(showEvent); + + if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) { + return; + } + + if (selector) { + target = $(selector)[0]; + } + + this._activate(this._element, ulElement); + + var complete = function complete() { + var hiddenEvent = $.Event(Event.HIDDEN, { + relatedTarget: _this15._element + }); + + var shownEvent = $.Event(Event.SHOWN, { + relatedTarget: previous + }); + + $(previous).trigger(hiddenEvent); + $(_this15._element).trigger(shownEvent); + }; + + if (target) { + this._activate(target, target.parentNode, complete); + } else { + complete(); + } + } + }, { + key: 'dispose', + value: function dispose() { + $.removeClass(this._element, DATA_KEY); + this._element = null; + } + + // private + + }, { + key: '_activate', + value: function _activate(element, container, callback) { + var active = $(container).find(Selector.ACTIVE_CHILD)[0]; + var isTransitioning = callback && Util.supportsTransitionEnd() && (active && $(active).hasClass(ClassName.FADE) || Boolean($(container).find(Selector.FADE_CHILD)[0])); + + var complete = $.proxy(this._transitionComplete, this, element, active, isTransitioning, callback); + + if (active && isTransitioning) { + $(active).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION); + } else { + complete(); + } + + if (active) { + $(active).removeClass(ClassName.IN); + } + } + }, { + key: '_transitionComplete', + value: function _transitionComplete(element, active, isTransitioning, callback) { + if (active) { + $(active).removeClass(ClassName.ACTIVE); + + var dropdownChild = $(active).find(Selector.DROPDOWN_ACTIVE_CHILD)[0]; + + if (dropdownChild) { + $(dropdownChild).removeClass(ClassName.ACTIVE); + } + + active.setAttribute('aria-expanded', false); + } + + $(element).addClass(ClassName.ACTIVE); + element.setAttribute('aria-expanded', true); + + if (isTransitioning) { + Util.reflow(element); + $(element).addClass(ClassName.IN); + } else { + $(element).removeClass(ClassName.FADE); + } + + if (element.parentNode && $(element.parentNode).hasClass(ClassName.DROPDOWN_MENU)) { + + var dropdownElement = $(element).closest(Selector.DROPDOWN)[0]; + if (dropdownElement) { + $(dropdownElement).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE); + } + + element.setAttribute('aria-expanded', true); + } + + if (callback) { + callback(); + } + } + + // static + + }], [{ + key: '_jQueryInterface', + value: function _jQueryInterface(config) { + return this.each(function () { + var $this = $(this); + var data = $this.data(DATA_KEY); + + if (!data) { + data = data = new Tab(this); + $this.data(DATA_KEY, data); + } + + if (typeof config === 'string') { + if (data[config] === undefined) { + throw new Error('No method named "' + config + '"'); + } + data[config](); + } + }); + } + }, { + key: 'VERSION', + get: function get() { + return VERSION; + } + }]); + + return Tab; + })(); + + $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) { + event.preventDefault(); + Tab._jQueryInterface.call($(this), 'show'); + }); + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = Tab._jQueryInterface; + $.fn[NAME].Constructor = Tab; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Tab._jQueryInterface; + }; + + return Tab; +})(jQuery); + +/* global Tether */ + +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0-alpha.2): tooltip.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +var Tooltip = (function ($) { + + /** + * Check for Tether dependency + * Tether - http://github.hubspot.com/tether/ + */ + if (window.Tether === undefined) { + throw new Error('Bootstrap tooltips require Tether (http://github.hubspot.com/tether/)'); } /** @@ -3295,13 +2778,28 @@ * ------------------------------------------------------------------------ */ - var NAME$6 = 'tooltip'; - var DATA_KEY$6 = 'bs.tooltip'; - var EVENT_KEY$6 = "." + DATA_KEY$6; - var CLASS_PREFIX = 'bs-tooltip'; - var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", 'g'); - var DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn']); - var DefaultType$4 = { + var NAME = 'tooltip'; + var VERSION = '4.0.0-alpha'; + var DATA_KEY = 'bs.tooltip'; + var EVENT_KEY = '.' + DATA_KEY; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + var TRANSITION_DURATION = 150; + var CLASS_PREFIX = 'bs-tether'; + + var Default = { + animation: true, + template: '' + '' + '', + trigger: 'hover focus', + title: '', + delay: 0, + html: false, + selector: false, + placement: 'top', + offset: '0 0', + constraints: [] + }; + + var DefaultType = { animation: 'boolean', template: 'string', title: '(string|element|function)', @@ -3310,750 +2808,572 @@ html: 'boolean', selector: '(string|boolean)', placement: '(string|function)', - container: '(string|element|boolean)', - fallbackPlacements: '(null|array)', - boundary: '(string|element)', - customClass: '(string|function)', - sanitize: 'boolean', - sanitizeFn: '(null|function)', - allowList: 'object', - popperConfig: '(null|object)' + offset: 'string', + constraints: 'array' }; + var AttachmentMap = { - AUTO: 'auto', - TOP: 'top', - RIGHT: isRTL ? 'left' : 'right', - BOTTOM: 'bottom', - LEFT: isRTL ? 'right' : 'left' + TOP: 'bottom center', + RIGHT: 'middle left', + BOTTOM: 'top center', + LEFT: 'middle right' }; - var Default$4 = { - animation: true, - template: '' + '' + '' + '', - trigger: 'hover focus', - title: '', - delay: 0, - html: false, - selector: false, - placement: 'top', - container: false, - fallbackPlacements: null, - boundary: 'clippingParents', - customClass: '', - sanitize: true, - sanitizeFn: null, - allowList: DefaultAllowlist, - popperConfig: null + + var HoverState = { + IN: 'in', + OUT: 'out' }; - var Event$1 = { - HIDE: "hide" + EVENT_KEY$6, - HIDDEN: "hidden" + EVENT_KEY$6, - SHOW: "show" + EVENT_KEY$6, - SHOWN: "shown" + EVENT_KEY$6, - INSERTED: "inserted" + EVENT_KEY$6, - CLICK: "click" + EVENT_KEY$6, - FOCUSIN: "focusin" + EVENT_KEY$6, - FOCUSOUT: "focusout" + EVENT_KEY$6, - MOUSEENTER: "mouseenter" + EVENT_KEY$6, - MOUSELEAVE: "mouseleave" + EVENT_KEY$6 + + var Event = { + HIDE: 'hide' + EVENT_KEY, + HIDDEN: 'hidden' + EVENT_KEY, + SHOW: 'show' + EVENT_KEY, + SHOWN: 'shown' + EVENT_KEY, + INSERTED: 'inserted' + EVENT_KEY, + CLICK: 'click' + EVENT_KEY, + FOCUSIN: 'focusin' + EVENT_KEY, + FOCUSOUT: 'focusout' + EVENT_KEY, + MOUSEENTER: 'mouseenter' + EVENT_KEY, + MOUSELEAVE: 'mouseleave' + EVENT_KEY }; - var CLASS_NAME_FADE$1 = 'fade'; - var CLASS_NAME_MODAL = 'modal'; - var CLASS_NAME_SHOW$3 = 'show'; - var HOVER_STATE_SHOW = 'show'; - var HOVER_STATE_OUT = 'out'; - var SELECTOR_TOOLTIP_INNER = '.tooltip-inner'; - var TRIGGER_HOVER = 'hover'; - var TRIGGER_FOCUS = 'focus'; - var TRIGGER_CLICK = 'click'; - var TRIGGER_MANUAL = 'manual'; + + var ClassName = { + FADE: 'fade', + IN: 'in' + }; + + var Selector = { + TOOLTIP: '.tooltip', + TOOLTIP_INNER: '.tooltip-inner' + }; + + var TetherClass = { + element: false, + enabled: false + }; + + var Trigger = { + HOVER: 'hover', + FOCUS: 'focus', + CLICK: 'click', + MANUAL: 'manual' + }; + /** * ------------------------------------------------------------------------ * Class Definition * ------------------------------------------------------------------------ */ - var Tooltip = /*#__PURE__*/function (_BaseComponent) { - _inheritsLoose(Tooltip, _BaseComponent); - + var Tooltip = (function () { function Tooltip(element, config) { - var _this; + _classCallCheck(this, Tooltip); - if (typeof Popper__namespace === 'undefined') { - throw new TypeError('Bootstrap\'s tooltips require Popper (https://popper.js.org)'); - } - - _this = _BaseComponent.call(this, element) || this; // private - - _this._isEnabled = true; - _this._timeout = 0; - _this._hoverState = ''; - _this._activeTrigger = {}; - _this._popper = null; // Protected - - _this.config = _this._getConfig(config); - _this.tip = null; - - _this._setListeners(); - - return _this; - } // Getters - - - var _proto = Tooltip.prototype; - - // Public - _proto.enable = function enable() { + // private this._isEnabled = true; - }; + this._timeout = 0; + this._hoverState = ''; + this._activeTrigger = {}; + this._tether = null; - _proto.disable = function disable() { - this._isEnabled = false; - }; - - _proto.toggleEnabled = function toggleEnabled() { - this._isEnabled = !this._isEnabled; - }; - - _proto.toggle = function toggle(event) { - if (!this._isEnabled) { - return; - } - - if (event) { - var dataKey = this.constructor.DATA_KEY; - var context = Data.getData(event.delegateTarget, dataKey); - - if (!context) { - context = new this.constructor(event.delegateTarget, this._getDelegateConfig()); - Data.setData(event.delegateTarget, dataKey, context); - } - - context._activeTrigger.click = !context._activeTrigger.click; - - if (context._isWithActiveTrigger()) { - context._enter(null, context); - } else { - context._leave(null, context); - } - } else { - if (this.getTipElement().classList.contains(CLASS_NAME_SHOW$3)) { - this._leave(null, this); - - return; - } - - this._enter(null, this); - } - }; - - _proto.dispose = function dispose() { - clearTimeout(this._timeout); - EventHandler.off(this._element, this.constructor.EVENT_KEY); - EventHandler.off(this._element.closest("." + CLASS_NAME_MODAL), 'hide.bs.modal', this._hideModalHandler); - - if (this.tip) { - this.tip.parentNode.removeChild(this.tip); - } - - this._isEnabled = null; - this._timeout = null; - this._hoverState = null; - this._activeTrigger = null; - - if (this._popper) { - this._popper.destroy(); - } - - this._popper = null; - this.config = null; + // protected + this.element = element; + this.config = this._getConfig(config); this.tip = null; - _BaseComponent.prototype.dispose.call(this); - }; + this._setListeners(); + } - _proto.show = function show() { - var _this2 = this; + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ - if (this._element.style.display === 'none') { - throw new Error('Please use show on visible elements'); + // getters + + _createClass(Tooltip, [{ + key: 'enable', + + // public + + value: function enable() { + this._isEnabled = true; } + }, { + key: 'disable', + value: function disable() { + this._isEnabled = false; + } + }, { + key: 'toggleEnabled', + value: function toggleEnabled() { + this._isEnabled = !this._isEnabled; + } + }, { + key: 'toggle', + value: function toggle(event) { + if (event) { + var dataKey = this.constructor.DATA_KEY; + var context = $(event.currentTarget).data(dataKey); - if (this.isWithContent() && this._isEnabled) { - var showEvent = EventHandler.trigger(this._element, this.constructor.Event.SHOW); - var shadowRoot = findShadowRoot(this._element); - var isInTheDom = shadowRoot === null ? this._element.ownerDocument.documentElement.contains(this._element) : shadowRoot.contains(this._element); - - if (showEvent.defaultPrevented || !isInTheDom) { - return; - } - - var tip = this.getTipElement(); - var tipId = getUID(this.constructor.NAME); - tip.setAttribute('id', tipId); - - this._element.setAttribute('aria-describedby', tipId); - - this.setContent(); - - if (this.config.animation) { - tip.classList.add(CLASS_NAME_FADE$1); - } - - var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this._element) : this.config.placement; - - var attachment = this._getAttachment(placement); - - this._addAttachmentClass(attachment); - - var container = this._getContainer(); - - Data.setData(tip, this.constructor.DATA_KEY, this); - - if (!this._element.ownerDocument.documentElement.contains(this.tip)) { - container.appendChild(tip); - } - - EventHandler.trigger(this._element, this.constructor.Event.INSERTED); - this._popper = Popper.createPopper(this._element, tip, this._getPopperConfig(attachment)); - tip.classList.add(CLASS_NAME_SHOW$3); - var customClass = typeof this.config.customClass === 'function' ? this.config.customClass() : this.config.customClass; - - if (customClass) { - var _tip$classList; - - (_tip$classList = tip.classList).add.apply(_tip$classList, customClass.split(' ')); - } // If this is a touch-enabled device we add extra - // empty mouseover listeners to the body's immediate children; - // only needed because of broken event delegation on iOS - // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html - - - if ('ontouchstart' in document.documentElement) { - var _ref; - - (_ref = []).concat.apply(_ref, document.body.children).forEach(function (element) { - EventHandler.on(element, 'mouseover', noop()); - }); - } - - var complete = function complete() { - var prevHoverState = _this2._hoverState; - _this2._hoverState = null; - EventHandler.trigger(_this2._element, _this2.constructor.Event.SHOWN); - - if (prevHoverState === HOVER_STATE_OUT) { - _this2._leave(null, _this2); + if (!context) { + context = new this.constructor(event.currentTarget, this._getDelegateConfig()); + $(event.currentTarget).data(dataKey, context); } - }; - if (this.tip.classList.contains(CLASS_NAME_FADE$1)) { - var transitionDuration = getTransitionDurationFromElement(this.tip); - EventHandler.one(this.tip, TRANSITION_END, complete); - emulateTransitionEnd(this.tip, transitionDuration); + context._activeTrigger.click = !context._activeTrigger.click; + + if (context._isWithActiveTrigger()) { + context._enter(null, context); + } else { + context._leave(null, context); + } } else { + + if ($(this.getTipElement()).hasClass(ClassName.IN)) { + this._leave(null, this); + return; + } + + this._enter(null, this); + } + } + }, { + key: 'dispose', + value: function dispose() { + clearTimeout(this._timeout); + + this.cleanupTether(); + + $.removeData(this.element, this.constructor.DATA_KEY); + + $(this.element).off(this.constructor.EVENT_KEY); + + if (this.tip) { + $(this.tip).remove(); + } + + this._isEnabled = null; + this._timeout = null; + this._hoverState = null; + this._activeTrigger = null; + this._tether = null; + + this.element = null; + this.config = null; + this.tip = null; + } + }, { + key: 'show', + value: function show() { + var _this16 = this; + + var showEvent = $.Event(this.constructor.Event.SHOW); + + if (this.isWithContent() && this._isEnabled) { + $(this.element).trigger(showEvent); + + var isInTheDom = $.contains(this.element.ownerDocument.documentElement, this.element); + + if (showEvent.isDefaultPrevented() || !isInTheDom) { + return; + } + + var tip = this.getTipElement(); + var tipId = Util.getUID(this.constructor.NAME); + + tip.setAttribute('id', tipId); + this.element.setAttribute('aria-describedby', tipId); + + this.setContent(); + + if (this.config.animation) { + $(tip).addClass(ClassName.FADE); + } + + var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement; + + var attachment = this._getAttachment(placement); + + $(tip).data(this.constructor.DATA_KEY, this).appendTo(document.body); + + $(this.element).trigger(this.constructor.Event.INSERTED); + + this._tether = new Tether({ + attachment: attachment, + element: tip, + target: this.element, + classes: TetherClass, + classPrefix: CLASS_PREFIX, + offset: this.config.offset, + constraints: this.config.constraints, + addTargetClasses: false + }); + + Util.reflow(tip); + this._tether.position(); + + $(tip).addClass(ClassName.IN); + + var complete = function complete() { + var prevHoverState = _this16._hoverState; + _this16._hoverState = null; + + $(_this16.element).trigger(_this16.constructor.Event.SHOWN); + + if (prevHoverState === HoverState.OUT) { + _this16._leave(null, _this16); + } + }; + + if (Util.supportsTransitionEnd() && $(this.tip).hasClass(ClassName.FADE)) { + $(this.tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(Tooltip._TRANSITION_DURATION); + return; + } + complete(); } } - }; + }, { + key: 'hide', + value: function hide(callback) { + var _this17 = this; - _proto.hide = function hide() { - var _this3 = this; - - if (!this._popper) { - return; - } - - var tip = this.getTipElement(); - - var complete = function complete() { - if (_this3._hoverState !== HOVER_STATE_SHOW && tip.parentNode) { - tip.parentNode.removeChild(tip); - } - - _this3._cleanTipClass(); - - _this3._element.removeAttribute('aria-describedby'); - - EventHandler.trigger(_this3._element, _this3.constructor.Event.HIDDEN); - - if (_this3._popper) { - _this3._popper.destroy(); - - _this3._popper = null; - } - }; - - var hideEvent = EventHandler.trigger(this._element, this.constructor.Event.HIDE); - - if (hideEvent.defaultPrevented) { - return; - } - - tip.classList.remove(CLASS_NAME_SHOW$3); // If this is a touch-enabled device we remove the extra - // empty mouseover listeners we added for iOS support - - if ('ontouchstart' in document.documentElement) { - var _ref2; - - (_ref2 = []).concat.apply(_ref2, document.body.children).forEach(function (element) { - return EventHandler.off(element, 'mouseover', noop); - }); - } - - this._activeTrigger[TRIGGER_CLICK] = false; - this._activeTrigger[TRIGGER_FOCUS] = false; - this._activeTrigger[TRIGGER_HOVER] = false; - - if (this.tip.classList.contains(CLASS_NAME_FADE$1)) { - var transitionDuration = getTransitionDurationFromElement(tip); - EventHandler.one(tip, TRANSITION_END, complete); - emulateTransitionEnd(tip, transitionDuration); - } else { - complete(); - } - - this._hoverState = ''; - }; - - _proto.update = function update() { - if (this._popper !== null) { - this._popper.update(); - } - } // Protected - ; - - _proto.isWithContent = function isWithContent() { - return Boolean(this.getTitle()); - }; - - _proto.getTipElement = function getTipElement() { - if (this.tip) { - return this.tip; - } - - var element = document.createElement('div'); - element.innerHTML = this.config.template; - this.tip = element.children[0]; - return this.tip; - }; - - _proto.setContent = function setContent() { - var tip = this.getTipElement(); - this.setElementContent(SelectorEngine.findOne(SELECTOR_TOOLTIP_INNER, tip), this.getTitle()); - tip.classList.remove(CLASS_NAME_FADE$1, CLASS_NAME_SHOW$3); - }; - - _proto.setElementContent = function setElementContent(element, content) { - if (element === null) { - return; - } - - if (typeof content === 'object' && isElement(content)) { - if (content.jquery) { - content = content[0]; - } // content is a DOM node or a jQuery - - - if (this.config.html) { - if (content.parentNode !== element) { - element.innerHTML = ''; - element.appendChild(content); + var tip = this.getTipElement(); + var hideEvent = $.Event(this.constructor.Event.HIDE); + var complete = function complete() { + if (_this17._hoverState !== HoverState.IN && tip.parentNode) { + tip.parentNode.removeChild(tip); } - } else { - element.textContent = content.textContent; - } - return; - } + _this17.element.removeAttribute('aria-describedby'); + $(_this17.element).trigger(_this17.constructor.Event.HIDDEN); + _this17.cleanupTether(); - if (this.config.html) { - if (this.config.sanitize) { - content = sanitizeHtml(content, this.config.allowList, this.config.sanitizeFn); - } - - element.innerHTML = content; - } else { - element.textContent = content; - } - }; - - _proto.getTitle = function getTitle() { - var title = this._element.getAttribute('data-bs-original-title'); - - if (!title) { - title = typeof this.config.title === 'function' ? this.config.title.call(this._element) : this.config.title; - } - - return title; - }; - - _proto.updateAttachment = function updateAttachment(attachment) { - if (attachment === 'right') { - return 'end'; - } - - if (attachment === 'left') { - return 'start'; - } - - return attachment; - } // Private - ; - - _proto._getPopperConfig = function _getPopperConfig(attachment) { - var _this4 = this; - - var flipModifier = { - name: 'flip', - options: { - altBoundary: true - } - }; - - if (this.config.fallbackPlacements) { - flipModifier.options.fallbackPlacements = this.config.fallbackPlacements; - } - - var defaultBsConfig = { - placement: attachment, - modifiers: [flipModifier, { - name: 'preventOverflow', - options: { - rootBoundary: this.config.boundary + if (callback) { + callback(); } - }, { - name: 'arrow', - options: { - element: "." + this.constructor.NAME + "-arrow" - } - }, { - name: 'onChange', - enabled: true, - phase: 'afterWrite', - fn: function fn(data) { - return _this4._handlePopperPlacementChange(data); - } - }], - onFirstUpdate: function onFirstUpdate(data) { - if (data.options.placement !== data.placement) { - _this4._handlePopperPlacementChange(data); - } - } - }; - return _extends({}, defaultBsConfig, this.config.popperConfig); - }; - - _proto._addAttachmentClass = function _addAttachmentClass(attachment) { - this.getTipElement().classList.add(CLASS_PREFIX + "-" + this.updateAttachment(attachment)); - }; - - _proto._getContainer = function _getContainer() { - if (this.config.container === false) { - return document.body; - } - - if (isElement(this.config.container)) { - return this.config.container; - } - - return SelectorEngine.findOne(this.config.container); - }; - - _proto._getAttachment = function _getAttachment(placement) { - return AttachmentMap[placement.toUpperCase()]; - }; - - _proto._setListeners = function _setListeners() { - var _this5 = this; - - var triggers = this.config.trigger.split(' '); - triggers.forEach(function (trigger) { - if (trigger === 'click') { - EventHandler.on(_this5._element, _this5.constructor.Event.CLICK, _this5.config.selector, function (event) { - return _this5.toggle(event); - }); - } else if (trigger !== TRIGGER_MANUAL) { - var eventIn = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSEENTER : _this5.constructor.Event.FOCUSIN; - var eventOut = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSELEAVE : _this5.constructor.Event.FOCUSOUT; - EventHandler.on(_this5._element, eventIn, _this5.config.selector, function (event) { - return _this5._enter(event); - }); - EventHandler.on(_this5._element, eventOut, _this5.config.selector, function (event) { - return _this5._leave(event); - }); - } - }); - - this._hideModalHandler = function () { - if (_this5._element) { - _this5.hide(); - } - }; - - EventHandler.on(this._element.closest("." + CLASS_NAME_MODAL), 'hide.bs.modal', this._hideModalHandler); - - if (this.config.selector) { - this.config = _extends({}, this.config, { - trigger: 'manual', - selector: '' - }); - } else { - this._fixTitle(); - } - }; - - _proto._fixTitle = function _fixTitle() { - var title = this._element.getAttribute('title'); - - var originalTitleType = typeof this._element.getAttribute('data-bs-original-title'); - - if (title || originalTitleType !== 'string') { - this._element.setAttribute('data-bs-original-title', title || ''); - - if (title && !this._element.getAttribute('aria-label') && !this._element.textContent) { - this._element.setAttribute('aria-label', title); - } - - this._element.setAttribute('title', ''); - } - }; - - _proto._enter = function _enter(event, context) { - var dataKey = this.constructor.DATA_KEY; - context = context || Data.getData(event.delegateTarget, dataKey); - - if (!context) { - context = new this.constructor(event.delegateTarget, this._getDelegateConfig()); - Data.setData(event.delegateTarget, dataKey, context); - } - - if (event) { - context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true; - } - - if (context.getTipElement().classList.contains(CLASS_NAME_SHOW$3) || context._hoverState === HOVER_STATE_SHOW) { - context._hoverState = HOVER_STATE_SHOW; - return; - } - - clearTimeout(context._timeout); - context._hoverState = HOVER_STATE_SHOW; - - if (!context.config.delay || !context.config.delay.show) { - context.show(); - return; - } - - context._timeout = setTimeout(function () { - if (context._hoverState === HOVER_STATE_SHOW) { - context.show(); - } - }, context.config.delay.show); - }; - - _proto._leave = function _leave(event, context) { - var dataKey = this.constructor.DATA_KEY; - context = context || Data.getData(event.delegateTarget, dataKey); - - if (!context) { - context = new this.constructor(event.delegateTarget, this._getDelegateConfig()); - Data.setData(event.delegateTarget, dataKey, context); - } - - if (event) { - context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = false; - } - - if (context._isWithActiveTrigger()) { - return; - } - - clearTimeout(context._timeout); - context._hoverState = HOVER_STATE_OUT; - - if (!context.config.delay || !context.config.delay.hide) { - context.hide(); - return; - } - - context._timeout = setTimeout(function () { - if (context._hoverState === HOVER_STATE_OUT) { - context.hide(); - } - }, context.config.delay.hide); - }; - - _proto._isWithActiveTrigger = function _isWithActiveTrigger() { - for (var trigger in this._activeTrigger) { - if (this._activeTrigger[trigger]) { - return true; - } - } - - return false; - }; - - _proto._getConfig = function _getConfig(config) { - var dataAttributes = Manipulator.getDataAttributes(this._element); - Object.keys(dataAttributes).forEach(function (dataAttr) { - if (DISALLOWED_ATTRIBUTES.has(dataAttr)) { - delete dataAttributes[dataAttr]; - } - }); - - if (config && typeof config.container === 'object' && config.container.jquery) { - config.container = config.container[0]; - } - - config = _extends({}, this.constructor.Default, dataAttributes, typeof config === 'object' && config ? config : {}); - - if (typeof config.delay === 'number') { - config.delay = { - show: config.delay, - hide: config.delay }; - } - if (typeof config.title === 'number') { - config.title = config.title.toString(); - } + $(this.element).trigger(hideEvent); - if (typeof config.content === 'number') { - config.content = config.content.toString(); - } - - typeCheckConfig(NAME$6, config, this.constructor.DefaultType); - - if (config.sanitize) { - config.template = sanitizeHtml(config.template, config.allowList, config.sanitizeFn); - } - - return config; - }; - - _proto._getDelegateConfig = function _getDelegateConfig() { - var config = {}; - - if (this.config) { - for (var key in this.config) { - if (this.constructor.Default[key] !== this.config[key]) { - config[key] = this.config[key]; - } - } - } - - return config; - }; - - _proto._cleanTipClass = function _cleanTipClass() { - var tip = this.getTipElement(); - var tabClass = tip.getAttribute('class').match(BSCLS_PREFIX_REGEX); - - if (tabClass !== null && tabClass.length > 0) { - tabClass.map(function (token) { - return token.trim(); - }).forEach(function (tClass) { - return tip.classList.remove(tClass); - }); - } - }; - - _proto._handlePopperPlacementChange = function _handlePopperPlacementChange(popperData) { - var state = popperData.state; - - if (!state) { - return; - } - - this.tip = state.elements.popper; - - this._cleanTipClass(); - - this._addAttachmentClass(this._getAttachment(state.placement)); - } // Static - ; - - Tooltip.jQueryInterface = function jQueryInterface(config) { - return this.each(function () { - var data = Data.getData(this, DATA_KEY$6); - - var _config = typeof config === 'object' && config; - - if (!data && /dispose|hide/.test(config)) { + if (hideEvent.isDefaultPrevented()) { return; } - if (!data) { - data = new Tooltip(this, _config); + $(tip).removeClass(ClassName.IN); + + if (Util.supportsTransitionEnd() && $(this.tip).hasClass(ClassName.FADE)) { + + $(tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION); + } else { + complete(); } - if (typeof config === 'string') { - if (typeof data[config] === 'undefined') { - throw new TypeError("No method named \"" + config + "\""); + this._hoverState = ''; + } + + // protected + + }, { + key: 'isWithContent', + value: function isWithContent() { + return Boolean(this.getTitle()); + } + }, { + key: 'getTipElement', + value: function getTipElement() { + return this.tip = this.tip || $(this.config.template)[0]; + } + }, { + key: 'setContent', + value: function setContent() { + var $tip = $(this.getTipElement()); + + this.setElementContent($tip.find(Selector.TOOLTIP_INNER), this.getTitle()); + + $tip.removeClass(ClassName.FADE).removeClass(ClassName.IN); + + this.cleanupTether(); + } + }, { + key: 'setElementContent', + value: function setElementContent($element, content) { + var html = this.config.html; + if (typeof content === 'object' && (content.nodeType || content.jquery)) { + // content is a DOM node or a jQuery + if (html) { + if (!$(content).parent().is($element)) { + $element.empty().append(content); + } + } else { + $element.text($(content).text()); + } + } else { + $element[html ? 'html' : 'text'](content); + } + } + }, { + key: 'getTitle', + value: function getTitle() { + var title = this.element.getAttribute('data-original-title'); + + if (!title) { + title = typeof this.config.title === 'function' ? this.config.title.call(this.element) : this.config.title; + } + + return title; + } + }, { + key: 'cleanupTether', + value: function cleanupTether() { + if (this._tether) { + this._tether.destroy(); + } + } + + // private + + }, { + key: '_getAttachment', + value: function _getAttachment(placement) { + return AttachmentMap[placement.toUpperCase()]; + } + }, { + key: '_setListeners', + value: function _setListeners() { + var _this18 = this; + + var triggers = this.config.trigger.split(' '); + + triggers.forEach(function (trigger) { + if (trigger === 'click') { + $(_this18.element).on(_this18.constructor.Event.CLICK, _this18.config.selector, $.proxy(_this18.toggle, _this18)); + } else if (trigger !== Trigger.MANUAL) { + var eventIn = trigger === Trigger.HOVER ? _this18.constructor.Event.MOUSEENTER : _this18.constructor.Event.FOCUSIN; + var eventOut = trigger === Trigger.HOVER ? _this18.constructor.Event.MOUSELEAVE : _this18.constructor.Event.FOCUSOUT; + + $(_this18.element).on(eventIn, _this18.config.selector, $.proxy(_this18._enter, _this18)).on(eventOut, _this18.config.selector, $.proxy(_this18._leave, _this18)); + } + }); + + if (this.config.selector) { + this.config = $.extend({}, this.config, { + trigger: 'manual', + selector: '' + }); + } else { + this._fixTitle(); + } + } + }, { + key: '_fixTitle', + value: function _fixTitle() { + var titleType = typeof this.element.getAttribute('data-original-title'); + if (this.element.getAttribute('title') || titleType !== 'string') { + this.element.setAttribute('data-original-title', this.element.getAttribute('title') || ''); + this.element.setAttribute('title', ''); + } + } + }, { + key: '_enter', + value: function _enter(event, context) { + var dataKey = this.constructor.DATA_KEY; + + context = context || $(event.currentTarget).data(dataKey); + + if (!context) { + context = new this.constructor(event.currentTarget, this._getDelegateConfig()); + $(event.currentTarget).data(dataKey, context); + } + + if (event) { + context._activeTrigger[event.type === 'focusin' ? Trigger.FOCUS : Trigger.HOVER] = true; + } + + if ($(context.getTipElement()).hasClass(ClassName.IN) || context._hoverState === HoverState.IN) { + context._hoverState = HoverState.IN; + return; + } + + clearTimeout(context._timeout); + + context._hoverState = HoverState.IN; + + if (!context.config.delay || !context.config.delay.show) { + context.show(); + return; + } + + context._timeout = setTimeout(function () { + if (context._hoverState === HoverState.IN) { + context.show(); + } + }, context.config.delay.show); + } + }, { + key: '_leave', + value: function _leave(event, context) { + var dataKey = this.constructor.DATA_KEY; + + context = context || $(event.currentTarget).data(dataKey); + + if (!context) { + context = new this.constructor(event.currentTarget, this._getDelegateConfig()); + $(event.currentTarget).data(dataKey, context); + } + + if (event) { + context._activeTrigger[event.type === 'focusout' ? Trigger.FOCUS : Trigger.HOVER] = false; + } + + if (context._isWithActiveTrigger()) { + return; + } + + clearTimeout(context._timeout); + + context._hoverState = HoverState.OUT; + + if (!context.config.delay || !context.config.delay.hide) { + context.hide(); + return; + } + + context._timeout = setTimeout(function () { + if (context._hoverState === HoverState.OUT) { + context.hide(); + } + }, context.config.delay.hide); + } + }, { + key: '_isWithActiveTrigger', + value: function _isWithActiveTrigger() { + for (var trigger in this._activeTrigger) { + if (this._activeTrigger[trigger]) { + return true; + } + } + + return false; + } + }, { + key: '_getConfig', + value: function _getConfig(config) { + config = $.extend({}, this.constructor.Default, $(this.element).data(), config); + + if (config.delay && typeof config.delay === 'number') { + config.delay = { + show: config.delay, + hide: config.delay + }; + } + + Util.typeCheckConfig(NAME, config, this.constructor.DefaultType); + + return config; + } + }, { + key: '_getDelegateConfig', + value: function _getDelegateConfig() { + var config = {}; + + if (this.config) { + for (var key in this.config) { + if (this.constructor.Default[key] !== this.config[key]) { + config[key] = this.config[key]; + } + } + } + + return config; + } + + // static + + }], [{ + key: '_jQueryInterface', + value: function _jQueryInterface(config) { + return this.each(function () { + var data = $(this).data(DATA_KEY); + var _config = typeof config === 'object' ? config : null; + + if (!data && /destroy|hide/.test(config)) { + return; } - data[config](); - } - }); - }; + if (!data) { + data = new Tooltip(this, _config); + $(this).data(DATA_KEY, data); + } - _createClass(Tooltip, null, [{ - key: "Default", - get: function get() { - return Default$4; + if (typeof config === 'string') { + if (data[config] === undefined) { + throw new Error('No method named "' + config + '"'); + } + data[config](); + } + }); } }, { - key: "NAME", + key: 'VERSION', get: function get() { - return NAME$6; + return VERSION; } }, { - key: "DATA_KEY", + key: 'Default', get: function get() { - return DATA_KEY$6; + return Default; } }, { - key: "Event", + key: 'NAME', get: function get() { - return Event$1; + return NAME; } }, { - key: "EVENT_KEY", + key: 'DATA_KEY', get: function get() { - return EVENT_KEY$6; + return DATA_KEY; } }, { - key: "DefaultType", + key: 'Event', get: function get() { - return DefaultType$4; + return Event; + } + }, { + key: 'EVENT_KEY', + get: function get() { + return EVENT_KEY; + } + }, { + key: 'DefaultType', + get: function get() { + return DefaultType; } }]); return Tooltip; - }(BaseComponent); - /** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - * add .Tooltip to jQuery only if jQuery is present - */ + })(); + $.fn[NAME] = Tooltip._jQueryInterface; + $.fn[NAME].Constructor = Tooltip; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Tooltip._jQueryInterface; + }; - onDOMContentLoaded(function () { - var $ = getjQuery(); - /* istanbul ignore if */ + return Tooltip; +})(jQuery); - if ($) { - var JQUERY_NO_CONFLICT = $.fn[NAME$6]; - $.fn[NAME$6] = Tooltip.jQueryInterface; - $.fn[NAME$6].Constructor = Tooltip; +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0-alpha.2): popover.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ - $.fn[NAME$6].noConflict = function () { - $.fn[NAME$6] = JQUERY_NO_CONFLICT; - return Tooltip.jQueryInterface; - }; - } - }); +var Popover = (function ($) { /** * ------------------------------------------------------------------------ @@ -4061,948 +3381,180 @@ * ------------------------------------------------------------------------ */ - var NAME$7 = 'popover'; - var DATA_KEY$7 = 'bs.popover'; - var EVENT_KEY$7 = "." + DATA_KEY$7; - var CLASS_PREFIX$1 = 'bs-popover'; - var BSCLS_PREFIX_REGEX$1 = new RegExp("(^|\\s)" + CLASS_PREFIX$1 + "\\S+", 'g'); + var NAME = 'popover'; + var VERSION = '4.0.0-alpha'; + var DATA_KEY = 'bs.popover'; + var EVENT_KEY = '.' + DATA_KEY; + var JQUERY_NO_CONFLICT = $.fn[NAME]; - var Default$5 = _extends({}, Tooltip.Default, { + var Default = $.extend({}, Tooltip.Default, { placement: 'right', trigger: 'click', content: '', - template: '' + '' + '' + '' + '' + template: '' + '' + '' + '' }); - var DefaultType$5 = _extends({}, Tooltip.DefaultType, { + var DefaultType = $.extend({}, Tooltip.DefaultType, { content: '(string|element|function)' }); - var Event$2 = { - HIDE: "hide" + EVENT_KEY$7, - HIDDEN: "hidden" + EVENT_KEY$7, - SHOW: "show" + EVENT_KEY$7, - SHOWN: "shown" + EVENT_KEY$7, - INSERTED: "inserted" + EVENT_KEY$7, - CLICK: "click" + EVENT_KEY$7, - FOCUSIN: "focusin" + EVENT_KEY$7, - FOCUSOUT: "focusout" + EVENT_KEY$7, - MOUSEENTER: "mouseenter" + EVENT_KEY$7, - MOUSELEAVE: "mouseleave" + EVENT_KEY$7 + var ClassName = { + FADE: 'fade', + IN: 'in' }; - var CLASS_NAME_FADE$2 = 'fade'; - var CLASS_NAME_SHOW$4 = 'show'; - var SELECTOR_TITLE = '.popover-header'; - var SELECTOR_CONTENT = '.popover-body'; + + var Selector = { + TITLE: '.popover-title', + CONTENT: '.popover-content', + ARROW: '.popover-arrow' + }; + + var Event = { + HIDE: 'hide' + EVENT_KEY, + HIDDEN: 'hidden' + EVENT_KEY, + SHOW: 'show' + EVENT_KEY, + SHOWN: 'shown' + EVENT_KEY, + INSERTED: 'inserted' + EVENT_KEY, + CLICK: 'click' + EVENT_KEY, + FOCUSIN: 'focusin' + EVENT_KEY, + FOCUSOUT: 'focusout' + EVENT_KEY, + MOUSEENTER: 'mouseenter' + EVENT_KEY, + MOUSELEAVE: 'mouseleave' + EVENT_KEY + }; + /** * ------------------------------------------------------------------------ * Class Definition * ------------------------------------------------------------------------ */ - var Popover = /*#__PURE__*/function (_Tooltip) { - _inheritsLoose(Popover, _Tooltip); + var Popover = (function (_Tooltip) { + _inherits(Popover, _Tooltip); function Popover() { - return _Tooltip.apply(this, arguments) || this; + _classCallCheck(this, Popover); + + _get(Object.getPrototypeOf(Popover.prototype), 'constructor', this).apply(this, arguments); } - var _proto = Popover.prototype; + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ - // Overrides - _proto.isWithContent = function isWithContent() { - return this.getTitle() || this._getContent(); - }; + _createClass(Popover, [{ + key: 'isWithContent', - _proto.setContent = function setContent() { - var tip = this.getTipElement(); // we use append for html objects to maintain js events + // overrides - this.setElementContent(SelectorEngine.findOne(SELECTOR_TITLE, tip), this.getTitle()); + value: function isWithContent() { + return this.getTitle() || this._getContent(); + } + }, { + key: 'getTipElement', + value: function getTipElement() { + return this.tip = this.tip || $(this.config.template)[0]; + } + }, { + key: 'setContent', + value: function setContent() { + var $tip = $(this.getTipElement()); - var content = this._getContent(); + // we use append for html objects to maintain js events + this.setElementContent($tip.find(Selector.TITLE), this.getTitle()); + this.setElementContent($tip.find(Selector.CONTENT), this._getContent()); - if (typeof content === 'function') { - content = content.call(this._element); + $tip.removeClass(ClassName.FADE).removeClass(ClassName.IN); + + this.cleanupTether(); } - this.setElementContent(SelectorEngine.findOne(SELECTOR_CONTENT, tip), content); - tip.classList.remove(CLASS_NAME_FADE$2, CLASS_NAME_SHOW$4); - } // Private - ; + // private - _proto._addAttachmentClass = function _addAttachmentClass(attachment) { - this.getTipElement().classList.add(CLASS_PREFIX$1 + "-" + this.updateAttachment(attachment)); - }; - - _proto._getContent = function _getContent() { - return this._element.getAttribute('data-bs-content') || this.config.content; - }; - - _proto._cleanTipClass = function _cleanTipClass() { - var tip = this.getTipElement(); - var tabClass = tip.getAttribute('class').match(BSCLS_PREFIX_REGEX$1); - - if (tabClass !== null && tabClass.length > 0) { - tabClass.map(function (token) { - return token.trim(); - }).forEach(function (tClass) { - return tip.classList.remove(tClass); - }); + }, { + key: '_getContent', + value: function _getContent() { + return this.element.getAttribute('data-content') || (typeof this.config.content === 'function' ? this.config.content.call(this.element) : this.config.content); } - } // Static - ; - Popover.jQueryInterface = function jQueryInterface(config) { - return this.each(function () { - var data = Data.getData(this, DATA_KEY$7); + // static - var _config = typeof config === 'object' ? config : null; + }], [{ + key: '_jQueryInterface', + value: function _jQueryInterface(config) { + return this.each(function () { + var data = $(this).data(DATA_KEY); + var _config = typeof config === 'object' ? config : null; - if (!data && /dispose|hide/.test(config)) { - return; - } - - if (!data) { - data = new Popover(this, _config); - Data.setData(this, DATA_KEY$7, data); - } - - if (typeof config === 'string') { - if (typeof data[config] === 'undefined') { - throw new TypeError("No method named \"" + config + "\""); + if (!data && /destroy|hide/.test(config)) { + return; } - data[config](); - } - }); - }; + if (!data) { + data = new Popover(this, _config); + $(this).data(DATA_KEY, data); + } - _createClass(Popover, null, [{ - key: "Default", - // Getters - get: function get() { - return Default$5; + if (typeof config === 'string') { + if (data[config] === undefined) { + throw new Error('No method named "' + config + '"'); + } + data[config](); + } + }); } }, { - key: "NAME", + key: 'VERSION', + + // getters + get: function get() { - return NAME$7; + return VERSION; } }, { - key: "DATA_KEY", + key: 'Default', get: function get() { - return DATA_KEY$7; + return Default; } }, { - key: "Event", + key: 'NAME', get: function get() { - return Event$2; + return NAME; } }, { - key: "EVENT_KEY", + key: 'DATA_KEY', get: function get() { - return EVENT_KEY$7; + return DATA_KEY; } }, { - key: "DefaultType", + key: 'Event', get: function get() { - return DefaultType$5; + return Event; + } + }, { + key: 'EVENT_KEY', + get: function get() { + return EVENT_KEY; + } + }, { + key: 'DefaultType', + get: function get() { + return DefaultType; } }]); return Popover; - }(Tooltip); - /** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - * add .Popover to jQuery only if jQuery is present - */ + })(Tooltip); - - onDOMContentLoaded(function () { - var $ = getjQuery(); - /* istanbul ignore if */ - - if ($) { - var JQUERY_NO_CONFLICT = $.fn[NAME$7]; - $.fn[NAME$7] = Popover.jQueryInterface; - $.fn[NAME$7].Constructor = Popover; - - $.fn[NAME$7].noConflict = function () { - $.fn[NAME$7] = JQUERY_NO_CONFLICT; - return Popover.jQueryInterface; - }; - } - }); - - /** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - - var NAME$8 = 'scrollspy'; - var DATA_KEY$8 = 'bs.scrollspy'; - var EVENT_KEY$8 = "." + DATA_KEY$8; - var DATA_API_KEY$6 = '.data-api'; - var Default$6 = { - offset: 10, - method: 'auto', - target: '' - }; - var DefaultType$6 = { - offset: 'number', - method: 'string', - target: '(string|element)' - }; - var EVENT_ACTIVATE = "activate" + EVENT_KEY$8; - var EVENT_SCROLL = "scroll" + EVENT_KEY$8; - var EVENT_LOAD_DATA_API$1 = "load" + EVENT_KEY$8 + DATA_API_KEY$6; - var CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'; - var CLASS_NAME_ACTIVE$2 = 'active'; - var SELECTOR_DATA_SPY = '[data-bs-spy="scroll"]'; - var SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'; - var SELECTOR_NAV_LINKS = '.nav-link'; - var SELECTOR_NAV_ITEMS = '.nav-item'; - var SELECTOR_LIST_ITEMS = '.list-group-item'; - var SELECTOR_DROPDOWN = '.dropdown'; - var SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'; - var METHOD_OFFSET = 'offset'; - var METHOD_POSITION = 'position'; - /** - * ------------------------------------------------------------------------ - * Class Definition - * ------------------------------------------------------------------------ - */ - - var ScrollSpy = /*#__PURE__*/function (_BaseComponent) { - _inheritsLoose(ScrollSpy, _BaseComponent); - - function ScrollSpy(element, config) { - var _this; - - _this = _BaseComponent.call(this, element) || this; - _this._scrollElement = element.tagName === 'BODY' ? window : element; - _this._config = _this._getConfig(config); - _this._selector = _this._config.target + " " + SELECTOR_NAV_LINKS + ", " + _this._config.target + " " + SELECTOR_LIST_ITEMS + ", " + _this._config.target + " ." + CLASS_NAME_DROPDOWN_ITEM; - _this._offsets = []; - _this._targets = []; - _this._activeTarget = null; - _this._scrollHeight = 0; - EventHandler.on(_this._scrollElement, EVENT_SCROLL, function (event) { - return _this._process(event); - }); - - _this.refresh(); - - _this._process(); - - return _this; - } // Getters - - - var _proto = ScrollSpy.prototype; - - // Public - _proto.refresh = function refresh() { - var _this2 = this; - - var autoMethod = this._scrollElement === this._scrollElement.window ? METHOD_OFFSET : METHOD_POSITION; - var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method; - var offsetBase = offsetMethod === METHOD_POSITION ? this._getScrollTop() : 0; - this._offsets = []; - this._targets = []; - this._scrollHeight = this._getScrollHeight(); - var targets = SelectorEngine.find(this._selector); - targets.map(function (element) { - var targetSelector = getSelectorFromElement(element); - var target = targetSelector ? SelectorEngine.findOne(targetSelector) : null; - - if (target) { - var targetBCR = target.getBoundingClientRect(); - - if (targetBCR.width || targetBCR.height) { - return [Manipulator[offsetMethod](target).top + offsetBase, targetSelector]; - } - } - - return null; - }).filter(function (item) { - return item; - }).sort(function (a, b) { - return a[0] - b[0]; - }).forEach(function (item) { - _this2._offsets.push(item[0]); - - _this2._targets.push(item[1]); - }); - }; - - _proto.dispose = function dispose() { - _BaseComponent.prototype.dispose.call(this); - - EventHandler.off(this._scrollElement, EVENT_KEY$8); - this._scrollElement = null; - this._config = null; - this._selector = null; - this._offsets = null; - this._targets = null; - this._activeTarget = null; - this._scrollHeight = null; - } // Private - ; - - _proto._getConfig = function _getConfig(config) { - config = _extends({}, Default$6, typeof config === 'object' && config ? config : {}); - - if (typeof config.target !== 'string' && isElement(config.target)) { - var id = config.target.id; - - if (!id) { - id = getUID(NAME$8); - config.target.id = id; - } - - config.target = "#" + id; - } - - typeCheckConfig(NAME$8, config, DefaultType$6); - return config; - }; - - _proto._getScrollTop = function _getScrollTop() { - return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop; - }; - - _proto._getScrollHeight = function _getScrollHeight() { - return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight); - }; - - _proto._getOffsetHeight = function _getOffsetHeight() { - return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height; - }; - - _proto._process = function _process() { - var scrollTop = this._getScrollTop() + this._config.offset; - - var scrollHeight = this._getScrollHeight(); - - var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight(); - - if (this._scrollHeight !== scrollHeight) { - this.refresh(); - } - - if (scrollTop >= maxScroll) { - var target = this._targets[this._targets.length - 1]; - - if (this._activeTarget !== target) { - this._activate(target); - } - - return; - } - - if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) { - this._activeTarget = null; - - this._clear(); - - return; - } - - for (var i = this._offsets.length; i--;) { - var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]); - - if (isActiveTarget) { - this._activate(this._targets[i]); - } - } - }; - - _proto._activate = function _activate(target) { - this._activeTarget = target; - - this._clear(); - - var queries = this._selector.split(',').map(function (selector) { - return selector + "[data-bs-target=\"" + target + "\"]," + selector + "[href=\"" + target + "\"]"; - }); - - var link = SelectorEngine.findOne(queries.join(',')); - - if (link.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) { - SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE, link.closest(SELECTOR_DROPDOWN)).classList.add(CLASS_NAME_ACTIVE$2); - link.classList.add(CLASS_NAME_ACTIVE$2); - } else { - // Set triggered link as active - link.classList.add(CLASS_NAME_ACTIVE$2); - SelectorEngine.parents(link, SELECTOR_NAV_LIST_GROUP).forEach(function (listGroup) { - // Set triggered links parents as active - // With both and markup a parent is the previous sibling of any nav ancestor - SelectorEngine.prev(listGroup, SELECTOR_NAV_LINKS + ", " + SELECTOR_LIST_ITEMS).forEach(function (item) { - return item.classList.add(CLASS_NAME_ACTIVE$2); - }); // Handle special case when .nav-link is inside .nav-item - - SelectorEngine.prev(listGroup, SELECTOR_NAV_ITEMS).forEach(function (navItem) { - SelectorEngine.children(navItem, SELECTOR_NAV_LINKS).forEach(function (item) { - return item.classList.add(CLASS_NAME_ACTIVE$2); - }); - }); - }); - } - - EventHandler.trigger(this._scrollElement, EVENT_ACTIVATE, { - relatedTarget: target - }); - }; - - _proto._clear = function _clear() { - SelectorEngine.find(this._selector).filter(function (node) { - return node.classList.contains(CLASS_NAME_ACTIVE$2); - }).forEach(function (node) { - return node.classList.remove(CLASS_NAME_ACTIVE$2); - }); - } // Static - ; - - ScrollSpy.jQueryInterface = function jQueryInterface(config) { - return this.each(function () { - var data = Data.getData(this, DATA_KEY$8); - - var _config = typeof config === 'object' && config; - - if (!data) { - data = new ScrollSpy(this, _config); - } - - if (typeof config === 'string') { - if (typeof data[config] === 'undefined') { - throw new TypeError("No method named \"" + config + "\""); - } - - data[config](); - } - }); - }; - - _createClass(ScrollSpy, null, [{ - key: "Default", - get: function get() { - return Default$6; - } - }, { - key: "DATA_KEY", - get: function get() { - return DATA_KEY$8; - } - }]); - - return ScrollSpy; - }(BaseComponent); - /** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ - - - EventHandler.on(window, EVENT_LOAD_DATA_API$1, function () { - SelectorEngine.find(SELECTOR_DATA_SPY).forEach(function (spy) { - return new ScrollSpy(spy, Manipulator.getDataAttributes(spy)); - }); - }); - /** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - * add .ScrollSpy to jQuery only if jQuery is present - */ - - onDOMContentLoaded(function () { - var $ = getjQuery(); - /* istanbul ignore if */ - - if ($) { - var JQUERY_NO_CONFLICT = $.fn[NAME$8]; - $.fn[NAME$8] = ScrollSpy.jQueryInterface; - $.fn[NAME$8].Constructor = ScrollSpy; - - $.fn[NAME$8].noConflict = function () { - $.fn[NAME$8] = JQUERY_NO_CONFLICT; - return ScrollSpy.jQueryInterface; - }; - } - }); - - /** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - - var NAME$9 = 'tab'; - var DATA_KEY$9 = 'bs.tab'; - var EVENT_KEY$9 = "." + DATA_KEY$9; - var DATA_API_KEY$7 = '.data-api'; - var EVENT_HIDE$3 = "hide" + EVENT_KEY$9; - var EVENT_HIDDEN$3 = "hidden" + EVENT_KEY$9; - var EVENT_SHOW$3 = "show" + EVENT_KEY$9; - var EVENT_SHOWN$3 = "shown" + EVENT_KEY$9; - var EVENT_CLICK_DATA_API$6 = "click" + EVENT_KEY$9 + DATA_API_KEY$7; - var CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu'; - var CLASS_NAME_ACTIVE$3 = 'active'; - var CLASS_NAME_DISABLED$1 = 'disabled'; - var CLASS_NAME_FADE$3 = 'fade'; - var CLASS_NAME_SHOW$5 = 'show'; - var SELECTOR_DROPDOWN$1 = '.dropdown'; - var SELECTOR_NAV_LIST_GROUP$1 = '.nav, .list-group'; - var SELECTOR_ACTIVE$1 = '.active'; - var SELECTOR_ACTIVE_UL = ':scope > li > .active'; - var SELECTOR_DATA_TOGGLE$4 = '[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]'; - var SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle'; - var SELECTOR_DROPDOWN_ACTIVE_CHILD = ':scope > .dropdown-menu .active'; - /** - * ------------------------------------------------------------------------ - * Class Definition - * ------------------------------------------------------------------------ - */ - - var Tab = /*#__PURE__*/function (_BaseComponent) { - _inheritsLoose(Tab, _BaseComponent); - - function Tab() { - return _BaseComponent.apply(this, arguments) || this; - } - - var _proto = Tab.prototype; - - // Public - _proto.show = function show() { - var _this = this; - - if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && this._element.classList.contains(CLASS_NAME_ACTIVE$3) || this._element.classList.contains(CLASS_NAME_DISABLED$1)) { - return; - } - - var previous; - var target = getElementFromSelector(this._element); - - var listElement = this._element.closest(SELECTOR_NAV_LIST_GROUP$1); - - if (listElement) { - var itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE$1; - previous = SelectorEngine.find(itemSelector, listElement); - previous = previous[previous.length - 1]; - } - - var hideEvent = null; - - if (previous) { - hideEvent = EventHandler.trigger(previous, EVENT_HIDE$3, { - relatedTarget: this._element - }); - } - - var showEvent = EventHandler.trigger(this._element, EVENT_SHOW$3, { - relatedTarget: previous - }); - - if (showEvent.defaultPrevented || hideEvent !== null && hideEvent.defaultPrevented) { - return; - } - - this._activate(this._element, listElement); - - var complete = function complete() { - EventHandler.trigger(previous, EVENT_HIDDEN$3, { - relatedTarget: _this._element - }); - EventHandler.trigger(_this._element, EVENT_SHOWN$3, { - relatedTarget: previous - }); - }; - - if (target) { - this._activate(target, target.parentNode, complete); - } else { - complete(); - } - } // Private - ; - - _proto._activate = function _activate(element, container, callback) { - var _this2 = this; - - var activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ? SelectorEngine.find(SELECTOR_ACTIVE_UL, container) : SelectorEngine.children(container, SELECTOR_ACTIVE$1); - var active = activeElements[0]; - var isTransitioning = callback && active && active.classList.contains(CLASS_NAME_FADE$3); - - var complete = function complete() { - return _this2._transitionComplete(element, active, callback); - }; - - if (active && isTransitioning) { - var transitionDuration = getTransitionDurationFromElement(active); - active.classList.remove(CLASS_NAME_SHOW$5); - EventHandler.one(active, TRANSITION_END, complete); - emulateTransitionEnd(active, transitionDuration); - } else { - complete(); - } - }; - - _proto._transitionComplete = function _transitionComplete(element, active, callback) { - if (active) { - active.classList.remove(CLASS_NAME_ACTIVE$3); - var dropdownChild = SelectorEngine.findOne(SELECTOR_DROPDOWN_ACTIVE_CHILD, active.parentNode); - - if (dropdownChild) { - dropdownChild.classList.remove(CLASS_NAME_ACTIVE$3); - } - - if (active.getAttribute('role') === 'tab') { - active.setAttribute('aria-selected', false); - } - } - - element.classList.add(CLASS_NAME_ACTIVE$3); - - if (element.getAttribute('role') === 'tab') { - element.setAttribute('aria-selected', true); - } - - reflow(element); - - if (element.classList.contains(CLASS_NAME_FADE$3)) { - element.classList.add(CLASS_NAME_SHOW$5); - } - - if (element.parentNode && element.parentNode.classList.contains(CLASS_NAME_DROPDOWN_MENU)) { - var dropdownElement = element.closest(SELECTOR_DROPDOWN$1); - - if (dropdownElement) { - SelectorEngine.find(SELECTOR_DROPDOWN_TOGGLE$1).forEach(function (dropdown) { - return dropdown.classList.add(CLASS_NAME_ACTIVE$3); - }); - } - - element.setAttribute('aria-expanded', true); - } - - if (callback) { - callback(); - } - } // Static - ; - - Tab.jQueryInterface = function jQueryInterface(config) { - return this.each(function () { - var data = Data.getData(this, DATA_KEY$9) || new Tab(this); - - if (typeof config === 'string') { - if (typeof data[config] === 'undefined') { - throw new TypeError("No method named \"" + config + "\""); - } - - data[config](); - } - }); - }; - - _createClass(Tab, null, [{ - key: "DATA_KEY", - // Getters - get: function get() { - return DATA_KEY$9; - } - }]); - - return Tab; - }(BaseComponent); - /** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ - - - EventHandler.on(document, EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$4, function (event) { - event.preventDefault(); - var data = Data.getData(this, DATA_KEY$9) || new Tab(this); - data.show(); - }); - /** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - * add .Tab to jQuery only if jQuery is present - */ - - onDOMContentLoaded(function () { - var $ = getjQuery(); - /* istanbul ignore if */ - - if ($) { - var JQUERY_NO_CONFLICT = $.fn[NAME$9]; - $.fn[NAME$9] = Tab.jQueryInterface; - $.fn[NAME$9].Constructor = Tab; - - $.fn[NAME$9].noConflict = function () { - $.fn[NAME$9] = JQUERY_NO_CONFLICT; - return Tab.jQueryInterface; - }; - } - }); - - /** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - - var NAME$a = 'toast'; - var DATA_KEY$a = 'bs.toast'; - var EVENT_KEY$a = "." + DATA_KEY$a; - var EVENT_CLICK_DISMISS$1 = "click.dismiss" + EVENT_KEY$a; - var EVENT_HIDE$4 = "hide" + EVENT_KEY$a; - var EVENT_HIDDEN$4 = "hidden" + EVENT_KEY$a; - var EVENT_SHOW$4 = "show" + EVENT_KEY$a; - var EVENT_SHOWN$4 = "shown" + EVENT_KEY$a; - var CLASS_NAME_FADE$4 = 'fade'; - var CLASS_NAME_HIDE = 'hide'; - var CLASS_NAME_SHOW$6 = 'show'; - var CLASS_NAME_SHOWING = 'showing'; - var DefaultType$7 = { - animation: 'boolean', - autohide: 'boolean', - delay: 'number' - }; - var Default$7 = { - animation: true, - autohide: true, - delay: 5000 - }; - var SELECTOR_DATA_DISMISS$1 = '[data-bs-dismiss="toast"]'; - /** - * ------------------------------------------------------------------------ - * Class Definition - * ------------------------------------------------------------------------ - */ - - var Toast = /*#__PURE__*/function (_BaseComponent) { - _inheritsLoose(Toast, _BaseComponent); - - function Toast(element, config) { - var _this; - - _this = _BaseComponent.call(this, element) || this; - _this._config = _this._getConfig(config); - _this._timeout = null; - - _this._setListeners(); - - return _this; - } // Getters - - - var _proto = Toast.prototype; - - // Public - _proto.show = function show() { - var _this2 = this; - - var showEvent = EventHandler.trigger(this._element, EVENT_SHOW$4); - - if (showEvent.defaultPrevented) { - return; - } - - this._clearTimeout(); - - if (this._config.animation) { - this._element.classList.add(CLASS_NAME_FADE$4); - } - - var complete = function complete() { - _this2._element.classList.remove(CLASS_NAME_SHOWING); - - _this2._element.classList.add(CLASS_NAME_SHOW$6); - - EventHandler.trigger(_this2._element, EVENT_SHOWN$4); - - if (_this2._config.autohide) { - _this2._timeout = setTimeout(function () { - _this2.hide(); - }, _this2._config.delay); - } - }; - - this._element.classList.remove(CLASS_NAME_HIDE); - - reflow(this._element); - - this._element.classList.add(CLASS_NAME_SHOWING); - - if (this._config.animation) { - var transitionDuration = getTransitionDurationFromElement(this._element); - EventHandler.one(this._element, TRANSITION_END, complete); - emulateTransitionEnd(this._element, transitionDuration); - } else { - complete(); - } - }; - - _proto.hide = function hide() { - var _this3 = this; - - if (!this._element.classList.contains(CLASS_NAME_SHOW$6)) { - return; - } - - var hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$4); - - if (hideEvent.defaultPrevented) { - return; - } - - var complete = function complete() { - _this3._element.classList.add(CLASS_NAME_HIDE); - - EventHandler.trigger(_this3._element, EVENT_HIDDEN$4); - }; - - this._element.classList.remove(CLASS_NAME_SHOW$6); - - if (this._config.animation) { - var transitionDuration = getTransitionDurationFromElement(this._element); - EventHandler.one(this._element, TRANSITION_END, complete); - emulateTransitionEnd(this._element, transitionDuration); - } else { - complete(); - } - }; - - _proto.dispose = function dispose() { - this._clearTimeout(); - - if (this._element.classList.contains(CLASS_NAME_SHOW$6)) { - this._element.classList.remove(CLASS_NAME_SHOW$6); - } - - EventHandler.off(this._element, EVENT_CLICK_DISMISS$1); - - _BaseComponent.prototype.dispose.call(this); - - this._config = null; - } // Private - ; - - _proto._getConfig = function _getConfig(config) { - config = _extends({}, Default$7, Manipulator.getDataAttributes(this._element), typeof config === 'object' && config ? config : {}); - typeCheckConfig(NAME$a, config, this.constructor.DefaultType); - return config; - }; - - _proto._setListeners = function _setListeners() { - var _this4 = this; - - EventHandler.on(this._element, EVENT_CLICK_DISMISS$1, SELECTOR_DATA_DISMISS$1, function () { - return _this4.hide(); - }); - }; - - _proto._clearTimeout = function _clearTimeout() { - clearTimeout(this._timeout); - this._timeout = null; - } // Static - ; - - Toast.jQueryInterface = function jQueryInterface(config) { - return this.each(function () { - var data = Data.getData(this, DATA_KEY$a); - - var _config = typeof config === 'object' && config; - - if (!data) { - data = new Toast(this, _config); - } - - if (typeof config === 'string') { - if (typeof data[config] === 'undefined') { - throw new TypeError("No method named \"" + config + "\""); - } - - data[config](this); - } - }); - }; - - _createClass(Toast, null, [{ - key: "DefaultType", - get: function get() { - return DefaultType$7; - } - }, { - key: "Default", - get: function get() { - return Default$7; - } - }, { - key: "DATA_KEY", - get: function get() { - return DATA_KEY$a; - } - }]); - - return Toast; - }(BaseComponent); - /** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - * add .Toast to jQuery only if jQuery is present - */ - - - onDOMContentLoaded(function () { - var $ = getjQuery(); - /* istanbul ignore if */ - - if ($) { - var JQUERY_NO_CONFLICT = $.fn[NAME$a]; - $.fn[NAME$a] = Toast.jQueryInterface; - $.fn[NAME$a].Constructor = Toast; - - $.fn[NAME$a].noConflict = function () { - $.fn[NAME$a] = JQUERY_NO_CONFLICT; - return Toast.jQueryInterface; - }; - } - }); - - /** - * -------------------------------------------------------------------------- - * Bootstrap (v5.0.0-beta1): index.umd.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ - var index_umd = { - Alert: Alert, - Button: Button, - Carousel: Carousel, - Collapse: Collapse, - Dropdown: Dropdown, - Modal: Modal, - Popover: Popover, - ScrollSpy: ScrollSpy, - Tab: Tab, - Toast: Toast, - Tooltip: Tooltip + $.fn[NAME] = Popover._jQueryInterface; + $.fn[NAME].Constructor = Popover; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Popover._jQueryInterface; }; - return index_umd; + return Popover; +})(jQuery); -}))); -//# sourceMappingURL=bootstrap.js.map +}(jQuery); diff --git a/dist/js/bootstrap.js.map b/dist/js/bootstrap.js.map deleted file mode 100644 index 035757431..000000000 --- a/dist/js/bootstrap.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"bootstrap.js","sources":["../../js/src/util/index.js","../../js/src/dom/data.js","../../js/src/dom/event-handler.js","../../js/src/base-component.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/dom/manipulator.js","../../js/src/dom/selector-engine.js","../../js/src/carousel.js","../../js/src/collapse.js","../../js/src/dropdown.js","../../js/src/modal.js","../../js/src/util/sanitizer.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/toast.js","../../js/index.umd.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1000000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n// Shoutout AngusCroll (https://goo.gl/pxwQGp)\nconst toType = obj => {\n if (obj === null || obj === undefined) {\n return `${obj}`\n }\n\n return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\n/**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\nconst getUID = prefix => {\n do {\n prefix += Math.floor(Math.random() * MAX_UID)\n } while (document.getElementById(prefix))\n\n return prefix\n}\n\nconst getSelector = element => {\n let selector = element.getAttribute('data-bs-target')\n\n if (!selector || selector === '#') {\n const hrefAttr = element.getAttribute('href')\n\n selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null\n }\n\n return selector\n}\n\nconst getSelectorFromElement = element => {\n const selector = getSelector(element)\n\n if (selector) {\n return document.querySelector(selector) ? selector : null\n }\n\n return null\n}\n\nconst getElementFromSelector = element => {\n const selector = getSelector(element)\n\n return selector ? document.querySelector(selector) : null\n}\n\nconst getTransitionDurationFromElement = element => {\n if (!element) {\n return 0\n }\n\n // Get transition-duration of the element\n let { transitionDuration, transitionDelay } = window.getComputedStyle(element)\n\n const floatTransitionDuration = Number.parseFloat(transitionDuration)\n const floatTransitionDelay = Number.parseFloat(transitionDelay)\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0]\n transitionDelay = transitionDelay.split(',')[0]\n\n return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = element => {\n element.dispatchEvent(new Event(TRANSITION_END))\n}\n\nconst isElement = obj => (obj[0] || obj).nodeType\n\nconst emulateTransitionEnd = (element, duration) => {\n let called = false\n const durationPadding = 5\n const emulatedDuration = duration + durationPadding\n\n function listener() {\n called = true\n element.removeEventListener(TRANSITION_END, listener)\n }\n\n element.addEventListener(TRANSITION_END, listener)\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(element)\n }\n }, emulatedDuration)\n}\n\nconst typeCheckConfig = (componentName, config, configTypes) => {\n Object.keys(configTypes).forEach(property => {\n const expectedTypes = configTypes[property]\n const value = config[property]\n const valueType = value && isElement(value) ?\n 'element' :\n toType(value)\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new Error(\n `${componentName.toUpperCase()}: ` +\n `Option \"${property}\" provided type \"${valueType}\" ` +\n `but expected type \"${expectedTypes}\".`)\n }\n })\n}\n\nconst isVisible = element => {\n if (!element) {\n return false\n }\n\n if (element.style && element.parentNode && element.parentNode.style) {\n const elementStyle = getComputedStyle(element)\n const parentNodeStyle = getComputedStyle(element.parentNode)\n\n return elementStyle.display !== 'none' &&\n parentNodeStyle.display !== 'none' &&\n elementStyle.visibility !== 'hidden'\n }\n\n return false\n}\n\nconst findShadowRoot = element => {\n if (!document.documentElement.attachShadow) {\n return null\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode()\n return root instanceof ShadowRoot ? root : null\n }\n\n if (element instanceof ShadowRoot) {\n return element\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null\n }\n\n return findShadowRoot(element.parentNode)\n}\n\nconst noop = () => function () {}\n\nconst reflow = element => element.offsetHeight\n\nconst getjQuery = () => {\n const { jQuery } = window\n\n if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n return jQuery\n }\n\n return null\n}\n\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', callback)\n } else {\n callback()\n }\n}\n\nconst isRTL = document.documentElement.dir === 'rtl'\n\nexport {\n TRANSITION_END,\n getUID,\n getSelectorFromElement,\n getElementFromSelector,\n getTransitionDurationFromElement,\n triggerTransitionEnd,\n isElement,\n emulateTransitionEnd,\n typeCheckConfig,\n isVisible,\n findShadowRoot,\n noop,\n reflow,\n getjQuery,\n onDOMContentLoaded,\n isRTL\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst mapData = (() => {\n const storeData = {}\n let id = 1\n return {\n set(element, key, data) {\n if (typeof element.bsKey === 'undefined') {\n element.bsKey = {\n key,\n id\n }\n id++\n }\n\n storeData[element.bsKey.id] = data\n },\n get(element, key) {\n if (!element || typeof element.bsKey === 'undefined') {\n return null\n }\n\n const keyProperties = element.bsKey\n if (keyProperties.key === key) {\n return storeData[keyProperties.id]\n }\n\n return null\n },\n delete(element, key) {\n if (typeof element.bsKey === 'undefined') {\n return\n }\n\n const keyProperties = element.bsKey\n if (keyProperties.key === key) {\n delete storeData[keyProperties.id]\n delete element.bsKey\n }\n }\n }\n})()\n\nconst Data = {\n setData(instance, key, data) {\n mapData.set(instance, key, data)\n },\n getData(instance, key) {\n return mapData.get(instance, key)\n },\n removeData(instance, key) {\n mapData.delete(instance, key)\n }\n}\n\nexport default Data\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery } from '../util/index'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/\nconst stripNameRegex = /\\..*/\nconst stripUidRegex = /::\\d+$/\nconst eventRegistry = {} // Events storage\nlet uidEvent = 1\nconst customEvents = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout'\n}\nconst nativeEvents = new Set([\n 'click',\n 'dblclick',\n 'mouseup',\n 'mousedown',\n 'contextmenu',\n 'mousewheel',\n 'DOMMouseScroll',\n 'mouseover',\n 'mouseout',\n 'mousemove',\n 'selectstart',\n 'selectend',\n 'keydown',\n 'keypress',\n 'keyup',\n 'orientationchange',\n 'touchstart',\n 'touchmove',\n 'touchend',\n 'touchcancel',\n 'pointerdown',\n 'pointermove',\n 'pointerup',\n 'pointerleave',\n 'pointercancel',\n 'gesturestart',\n 'gesturechange',\n 'gestureend',\n 'focus',\n 'blur',\n 'change',\n 'reset',\n 'select',\n 'submit',\n 'focusin',\n 'focusout',\n 'load',\n 'unload',\n 'beforeunload',\n 'resize',\n 'move',\n 'DOMContentLoaded',\n 'readystatechange',\n 'error',\n 'abort',\n 'scroll'\n])\n\n/**\n * ------------------------------------------------------------------------\n * Private methods\n * ------------------------------------------------------------------------\n */\n\nfunction getUidEvent(element, uid) {\n return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\n}\n\nfunction getEvent(element) {\n const uid = getUidEvent(element)\n\n element.uidEvent = uid\n eventRegistry[uid] = eventRegistry[uid] || {}\n\n return eventRegistry[uid]\n}\n\nfunction bootstrapHandler(element, fn) {\n return function handler(event) {\n event.delegateTarget = element\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, fn)\n }\n\n return fn.apply(element, [event])\n }\n}\n\nfunction bootstrapDelegationHandler(element, selector, fn) {\n return function handler(event) {\n const domElements = element.querySelectorAll(selector)\n\n for (let { target } = event; target && target !== this; target = target.parentNode) {\n for (let i = domElements.length; i--;) {\n if (domElements[i] === target) {\n event.delegateTarget = target\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, fn)\n }\n\n return fn.apply(target, [event])\n }\n }\n }\n\n // To please ESLint\n return null\n }\n}\n\nfunction findHandler(events, handler, delegationSelector = null) {\n const uidEventList = Object.keys(events)\n\n for (let i = 0, len = uidEventList.length; i < len; i++) {\n const event = events[uidEventList[i]]\n\n if (event.originalHandler === handler && event.delegationSelector === delegationSelector) {\n return event\n }\n }\n\n return null\n}\n\nfunction normalizeParams(originalTypeEvent, handler, delegationFn) {\n const delegation = typeof handler === 'string'\n const originalHandler = delegation ? delegationFn : handler\n\n // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n let typeEvent = originalTypeEvent.replace(stripNameRegex, '')\n const custom = customEvents[typeEvent]\n\n if (custom) {\n typeEvent = custom\n }\n\n const isNative = nativeEvents.has(typeEvent)\n\n if (!isNative) {\n typeEvent = originalTypeEvent\n }\n\n return [delegation, originalHandler, typeEvent]\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFn, oneOff) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n if (!handler) {\n handler = delegationFn\n delegationFn = null\n }\n\n const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn)\n const events = getEvent(element)\n const handlers = events[typeEvent] || (events[typeEvent] = {})\n const previousFn = findHandler(handlers, originalHandler, delegation ? handler : null)\n\n if (previousFn) {\n previousFn.oneOff = previousFn.oneOff && oneOff\n\n return\n }\n\n const uid = getUidEvent(originalHandler, originalTypeEvent.replace(namespaceRegex, ''))\n const fn = delegation ?\n bootstrapDelegationHandler(element, handler, delegationFn) :\n bootstrapHandler(element, handler)\n\n fn.delegationSelector = delegation ? handler : null\n fn.originalHandler = originalHandler\n fn.oneOff = oneOff\n fn.uidEvent = uid\n handlers[uid] = fn\n\n element.addEventListener(typeEvent, fn, delegation)\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n const fn = findHandler(events[typeEvent], handler, delegationSelector)\n\n if (!fn) {\n return\n }\n\n element.removeEventListener(typeEvent, fn, Boolean(delegationSelector))\n delete events[typeEvent][fn.uidEvent]\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n const storeElementEvent = events[typeEvent] || {}\n\n Object.keys(storeElementEvent).forEach(handlerKey => {\n if (handlerKey.includes(namespace)) {\n const event = storeElementEvent[handlerKey]\n\n removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector)\n }\n })\n}\n\nconst EventHandler = {\n on(element, event, handler, delegationFn) {\n addHandler(element, event, handler, delegationFn, false)\n },\n\n one(element, event, handler, delegationFn) {\n addHandler(element, event, handler, delegationFn, true)\n },\n\n off(element, originalTypeEvent, handler, delegationFn) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn)\n const inNamespace = typeEvent !== originalTypeEvent\n const events = getEvent(element)\n const isNamespace = originalTypeEvent.startsWith('.')\n\n if (typeof originalHandler !== 'undefined') {\n // Simplest case: handler is passed, remove that listener ONLY.\n if (!events || !events[typeEvent]) {\n return\n }\n\n removeHandler(element, events, typeEvent, originalHandler, delegation ? handler : null)\n return\n }\n\n if (isNamespace) {\n Object.keys(events).forEach(elementEvent => {\n removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\n })\n }\n\n const storeElementEvent = events[typeEvent] || {}\n Object.keys(storeElementEvent).forEach(keyHandlers => {\n const handlerKey = keyHandlers.replace(stripUidRegex, '')\n\n if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n const event = storeElementEvent[keyHandlers]\n\n removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector)\n }\n })\n },\n\n trigger(element, event, args) {\n if (typeof event !== 'string' || !element) {\n return null\n }\n\n const $ = getjQuery()\n const typeEvent = event.replace(stripNameRegex, '')\n const inNamespace = event !== typeEvent\n const isNative = nativeEvents.has(typeEvent)\n\n let jQueryEvent\n let bubbles = true\n let nativeDispatch = true\n let defaultPrevented = false\n let evt = null\n\n if (inNamespace && $) {\n jQueryEvent = $.Event(event, args)\n\n $(element).trigger(jQueryEvent)\n bubbles = !jQueryEvent.isPropagationStopped()\n nativeDispatch = !jQueryEvent.isImmediatePropagationStopped()\n defaultPrevented = jQueryEvent.isDefaultPrevented()\n }\n\n if (isNative) {\n evt = document.createEvent('HTMLEvents')\n evt.initEvent(typeEvent, bubbles, true)\n } else {\n evt = new CustomEvent(event, {\n bubbles,\n cancelable: true\n })\n }\n\n // merge custom information in our event\n if (typeof args !== 'undefined') {\n Object.keys(args).forEach(key => {\n Object.defineProperty(evt, key, {\n get() {\n return args[key]\n }\n })\n })\n }\n\n if (defaultPrevented) {\n evt.preventDefault()\n }\n\n if (nativeDispatch) {\n element.dispatchEvent(evt)\n }\n\n if (evt.defaultPrevented && typeof jQueryEvent !== 'undefined') {\n jQueryEvent.preventDefault()\n }\n\n return evt\n }\n}\n\nexport default EventHandler\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst VERSION = '5.0.0-beta1'\n\nclass BaseComponent {\n constructor(element) {\n if (!element) {\n return\n }\n\n this._element = element\n Data.setData(element, this.constructor.DATA_KEY, this)\n }\n\n dispose() {\n Data.removeData(this._element, this.constructor.DATA_KEY)\n this._element = null\n }\n\n /** Static */\n\n static getInstance(element) {\n return Data.getData(element, this.DATA_KEY)\n }\n\n static get VERSION() {\n return VERSION\n }\n}\n\nexport default BaseComponent\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n getjQuery,\n onDOMContentLoaded,\n TRANSITION_END,\n emulateTransitionEnd,\n getElementFromSelector,\n getTransitionDurationFromElement\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'alert'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst SELECTOR_DISMISS = '[data-bs-dismiss=\"alert\"]'\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`\nconst EVENT_CLOSED = `closed${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASSNAME_ALERT = 'alert'\nconst CLASSNAME_FADE = 'fade'\nconst CLASSNAME_SHOW = 'show'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Alert extends BaseComponent {\n // Getters\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n close(element) {\n const rootElement = element ? this._getRootElement(element) : this._element\n const customEvent = this._triggerCloseEvent(rootElement)\n\n if (customEvent === null || customEvent.defaultPrevented) {\n return\n }\n\n this._removeElement(rootElement)\n }\n\n // Private\n\n _getRootElement(element) {\n return getElementFromSelector(element) || element.closest(`.${CLASSNAME_ALERT}`)\n }\n\n _triggerCloseEvent(element) {\n return EventHandler.trigger(element, EVENT_CLOSE)\n }\n\n _removeElement(element) {\n element.classList.remove(CLASSNAME_SHOW)\n\n if (!element.classList.contains(CLASSNAME_FADE)) {\n this._destroyElement(element)\n return\n }\n\n const transitionDuration = getTransitionDurationFromElement(element)\n\n EventHandler.one(element, TRANSITION_END, () => this._destroyElement(element))\n emulateTransitionEnd(element, transitionDuration)\n }\n\n _destroyElement(element) {\n if (element.parentNode) {\n element.parentNode.removeChild(element)\n }\n\n EventHandler.trigger(element, EVENT_CLOSED)\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY)\n\n if (!data) {\n data = new Alert(this)\n }\n\n if (config === 'close') {\n data[config](this)\n }\n })\n }\n\n static handleDismiss(alertInstance) {\n return function (event) {\n if (event) {\n event.preventDefault()\n }\n\n alertInstance.close(this)\n }\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DISMISS, Alert.handleDismiss(new Alert()))\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Alert to jQuery only if jQuery is present\n */\n\nonDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Alert.jQueryInterface\n $.fn[NAME].Constructor = Alert\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Alert.jQueryInterface\n }\n }\n})\n\nexport default Alert\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery, onDOMContentLoaded } from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'button'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"button\"]'\n\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Button extends BaseComponent {\n // Getters\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n toggle() {\n // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE))\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY)\n\n if (!data) {\n data = new Button(this)\n }\n\n if (config === 'toggle') {\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, event => {\n event.preventDefault()\n\n const button = event.target.closest(SELECTOR_DATA_TOGGLE)\n\n let data = Data.getData(button, DATA_KEY)\n if (!data) {\n data = new Button(button)\n }\n\n data.toggle()\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Button to jQuery only if jQuery is present\n */\n\nonDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Button.jQueryInterface\n $.fn[NAME].Constructor = Button\n\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Button.jQueryInterface\n }\n }\n})\n\nexport default Button\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(val) {\n if (val === 'true') {\n return true\n }\n\n if (val === 'false') {\n return false\n }\n\n if (val === Number(val).toString()) {\n return Number(val)\n }\n\n if (val === '' || val === 'null') {\n return null\n }\n\n return val\n}\n\nfunction normalizeDataKey(key) {\n return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`)\n}\n\nconst Manipulator = {\n setDataAttribute(element, key, value) {\n element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value)\n },\n\n removeDataAttribute(element, key) {\n element.removeAttribute(`data-bs-${normalizeDataKey(key)}`)\n },\n\n getDataAttributes(element) {\n if (!element) {\n return {}\n }\n\n const attributes = {}\n\n Object.keys(element.dataset)\n .filter(key => key.startsWith('bs'))\n .forEach(key => {\n let pureKey = key.replace(/^bs/, '')\n pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length)\n attributes[pureKey] = normalizeData(element.dataset[key])\n })\n\n return attributes\n },\n\n getDataAttribute(element, key) {\n return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`))\n },\n\n offset(element) {\n const rect = element.getBoundingClientRect()\n\n return {\n top: rect.top + document.body.scrollTop,\n left: rect.left + document.body.scrollLeft\n }\n },\n\n position(element) {\n return {\n top: element.offsetTop,\n left: element.offsetLeft\n }\n }\n}\n\nexport default Manipulator\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NODE_TEXT = 3\n\nconst SelectorEngine = {\n matches(element, selector) {\n return element.matches(selector)\n },\n\n find(selector, element = document.documentElement) {\n return [].concat(...Element.prototype.querySelectorAll.call(element, selector))\n },\n\n findOne(selector, element = document.documentElement) {\n return Element.prototype.querySelector.call(element, selector)\n },\n\n children(element, selector) {\n const children = [].concat(...element.children)\n\n return children.filter(child => child.matches(selector))\n },\n\n parents(element, selector) {\n const parents = []\n\n let ancestor = element.parentNode\n\n while (ancestor && ancestor.nodeType === Node.ELEMENT_NODE && ancestor.nodeType !== NODE_TEXT) {\n if (this.matches(ancestor, selector)) {\n parents.push(ancestor)\n }\n\n ancestor = ancestor.parentNode\n }\n\n return parents\n },\n\n prev(element, selector) {\n let previous = element.previousElementSibling\n\n while (previous) {\n if (previous.matches(selector)) {\n return [previous]\n }\n\n previous = previous.previousElementSibling\n }\n\n return []\n },\n\n next(element, selector) {\n let next = element.nextElementSibling\n\n while (next) {\n if (this.matches(next, selector)) {\n return [next]\n }\n\n next = next.nextElementSibling\n }\n\n return []\n }\n}\n\nexport default SelectorEngine\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n getjQuery,\n onDOMContentLoaded,\n TRANSITION_END,\n emulateTransitionEnd,\n getElementFromSelector,\n getTransitionDurationFromElement,\n isVisible,\n reflow,\n triggerTransitionEnd,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'carousel'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n interval: 5000,\n keyboard: true,\n slide: false,\n pause: 'hover',\n wrap: true,\n touch: true\n}\n\nconst DefaultType = {\n interval: '(number|boolean)',\n keyboard: 'boolean',\n slide: '(boolean|string)',\n pause: '(string|boolean)',\n wrap: 'boolean',\n touch: 'boolean'\n}\n\nconst DIRECTION_NEXT = 'next'\nconst DIRECTION_PREV = 'prev'\nconst DIRECTION_LEFT = 'left'\nconst DIRECTION_RIGHT = 'right'\n\nconst EVENT_SLIDE = `slide${EVENT_KEY}`\nconst EVENT_SLID = `slid${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY}`\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_CAROUSEL = 'carousel'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_SLIDE = 'slide'\nconst CLASS_NAME_END = 'carousel-item-end'\nconst CLASS_NAME_START = 'carousel-item-start'\nconst CLASS_NAME_NEXT = 'carousel-item-next'\nconst CLASS_NAME_PREV = 'carousel-item-prev'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\n\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ACTIVE_ITEM = '.active.carousel-item'\nconst SELECTOR_ITEM = '.carousel-item'\nconst SELECTOR_ITEM_IMG = '.carousel-item img'\nconst SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]'\n\nconst PointerType = {\n TOUCH: 'touch',\n PEN: 'pen'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\nclass Carousel extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._items = null\n this._interval = null\n this._activeElement = null\n this._isPaused = false\n this._isSliding = false\n this.touchTimeout = null\n this.touchStartX = 0\n this.touchDeltaX = 0\n\n this._config = this._getConfig(config)\n this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n this._pointerEvent = Boolean(window.PointerEvent)\n\n this._addEventListeners()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n next() {\n if (!this._isSliding) {\n this._slide(DIRECTION_NEXT)\n }\n }\n\n nextWhenVisible() {\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden && isVisible(this._element)) {\n this.next()\n }\n }\n\n prev() {\n if (!this._isSliding) {\n this._slide(DIRECTION_PREV)\n }\n }\n\n pause(event) {\n if (!event) {\n this._isPaused = true\n }\n\n if (SelectorEngine.findOne(SELECTOR_NEXT_PREV, this._element)) {\n triggerTransitionEnd(this._element)\n this.cycle(true)\n }\n\n clearInterval(this._interval)\n this._interval = null\n }\n\n cycle(event) {\n if (!event) {\n this._isPaused = false\n }\n\n if (this._interval) {\n clearInterval(this._interval)\n this._interval = null\n }\n\n if (this._config && this._config.interval && !this._isPaused) {\n this._updateInterval()\n\n this._interval = setInterval(\n (document.visibilityState ? this.nextWhenVisible : this.next).bind(this),\n this._config.interval\n )\n }\n }\n\n to(index) {\n this._activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n const activeIndex = this._getItemIndex(this._activeElement)\n\n if (index > this._items.length - 1 || index < 0) {\n return\n }\n\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.to(index))\n return\n }\n\n if (activeIndex === index) {\n this.pause()\n this.cycle()\n return\n }\n\n const direction = index > activeIndex ?\n DIRECTION_NEXT :\n DIRECTION_PREV\n\n this._slide(direction, this._items[index])\n }\n\n dispose() {\n super.dispose()\n EventHandler.off(this._element, EVENT_KEY)\n\n this._items = null\n this._config = null\n this._interval = null\n this._isPaused = null\n this._isSliding = null\n this._activeElement = null\n this._indicatorsElement = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _handleSwipe() {\n const absDeltax = Math.abs(this.touchDeltaX)\n\n if (absDeltax <= SWIPE_THRESHOLD) {\n return\n }\n\n const direction = absDeltax / this.touchDeltaX\n\n this.touchDeltaX = 0\n\n // swipe left\n if (direction > 0) {\n this.prev()\n }\n\n // swipe right\n if (direction < 0) {\n this.next()\n }\n }\n\n _addEventListeners() {\n if (this._config.keyboard) {\n EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n }\n\n if (this._config.pause === 'hover') {\n EventHandler.on(this._element, EVENT_MOUSEENTER, event => this.pause(event))\n EventHandler.on(this._element, EVENT_MOUSELEAVE, event => this.cycle(event))\n }\n\n if (this._config.touch && this._touchSupported) {\n this._addTouchEventListeners()\n }\n }\n\n _addTouchEventListeners() {\n const start = event => {\n if (this._pointerEvent && PointerType[event.pointerType.toUpperCase()]) {\n this.touchStartX = event.clientX\n } else if (!this._pointerEvent) {\n this.touchStartX = event.touches[0].clientX\n }\n }\n\n const move = event => {\n // ensure swiping with one touch and not pinching\n if (event.touches && event.touches.length > 1) {\n this.touchDeltaX = 0\n } else {\n this.touchDeltaX = event.touches[0].clientX - this.touchStartX\n }\n }\n\n const end = event => {\n if (this._pointerEvent && PointerType[event.pointerType.toUpperCase()]) {\n this.touchDeltaX = event.clientX - this.touchStartX\n }\n\n this._handleSwipe()\n if (this._config.pause === 'hover') {\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n\n this.pause()\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout)\n }\n\n this.touchTimeout = setTimeout(event => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n }\n }\n\n SelectorEngine.find(SELECTOR_ITEM_IMG, this._element).forEach(itemImg => {\n EventHandler.on(itemImg, EVENT_DRAG_START, e => e.preventDefault())\n })\n\n if (this._pointerEvent) {\n EventHandler.on(this._element, EVENT_POINTERDOWN, event => start(event))\n EventHandler.on(this._element, EVENT_POINTERUP, event => end(event))\n\n this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n } else {\n EventHandler.on(this._element, EVENT_TOUCHSTART, event => start(event))\n EventHandler.on(this._element, EVENT_TOUCHMOVE, event => move(event))\n EventHandler.on(this._element, EVENT_TOUCHEND, event => end(event))\n }\n }\n\n _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return\n }\n\n switch (event.key) {\n case ARROW_LEFT_KEY:\n event.preventDefault()\n this.prev()\n break\n case ARROW_RIGHT_KEY:\n event.preventDefault()\n this.next()\n break\n default:\n }\n }\n\n _getItemIndex(element) {\n this._items = element && element.parentNode ?\n SelectorEngine.find(SELECTOR_ITEM, element.parentNode) :\n []\n\n return this._items.indexOf(element)\n }\n\n _getItemByDirection(direction, activeElement) {\n const isNextDirection = direction === DIRECTION_NEXT\n const isPrevDirection = direction === DIRECTION_PREV\n const activeIndex = this._getItemIndex(activeElement)\n const lastItemIndex = this._items.length - 1\n const isGoingToWrap = (isPrevDirection && activeIndex === 0) ||\n (isNextDirection && activeIndex === lastItemIndex)\n\n if (isGoingToWrap && !this._config.wrap) {\n return activeElement\n }\n\n const delta = direction === DIRECTION_PREV ? -1 : 1\n const itemIndex = (activeIndex + delta) % this._items.length\n\n return itemIndex === -1 ?\n this._items[this._items.length - 1] :\n this._items[itemIndex]\n }\n\n _triggerSlideEvent(relatedTarget, eventDirectionName) {\n const targetIndex = this._getItemIndex(relatedTarget)\n const fromIndex = this._getItemIndex(SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element))\n\n return EventHandler.trigger(this._element, EVENT_SLIDE, {\n relatedTarget,\n direction: eventDirectionName,\n from: fromIndex,\n to: targetIndex\n })\n }\n\n _setActiveIndicatorElement(element) {\n if (this._indicatorsElement) {\n const indicators = SelectorEngine.find(SELECTOR_ACTIVE, this._indicatorsElement)\n\n for (let i = 0; i < indicators.length; i++) {\n indicators[i].classList.remove(CLASS_NAME_ACTIVE)\n }\n\n const nextIndicator = this._indicatorsElement.children[\n this._getItemIndex(element)\n ]\n\n if (nextIndicator) {\n nextIndicator.classList.add(CLASS_NAME_ACTIVE)\n }\n }\n }\n\n _updateInterval() {\n const element = this._activeElement || SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n\n if (!element) {\n return\n }\n\n const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10)\n\n if (elementInterval) {\n this._config.defaultInterval = this._config.defaultInterval || this._config.interval\n this._config.interval = elementInterval\n } else {\n this._config.interval = this._config.defaultInterval || this._config.interval\n }\n }\n\n _slide(direction, element) {\n const activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n const activeElementIndex = this._getItemIndex(activeElement)\n const nextElement = element || (activeElement && this._getItemByDirection(direction, activeElement))\n\n const nextElementIndex = this._getItemIndex(nextElement)\n const isCycling = Boolean(this._interval)\n\n let directionalClassName\n let orderClassName\n let eventDirectionName\n\n if (direction === DIRECTION_NEXT) {\n directionalClassName = CLASS_NAME_START\n orderClassName = CLASS_NAME_NEXT\n eventDirectionName = DIRECTION_LEFT\n } else {\n directionalClassName = CLASS_NAME_END\n orderClassName = CLASS_NAME_PREV\n eventDirectionName = DIRECTION_RIGHT\n }\n\n if (nextElement && nextElement.classList.contains(CLASS_NAME_ACTIVE)) {\n this._isSliding = false\n return\n }\n\n const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName)\n if (slideEvent.defaultPrevented) {\n return\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n return\n }\n\n this._isSliding = true\n\n if (isCycling) {\n this.pause()\n }\n\n this._setActiveIndicatorElement(nextElement)\n this._activeElement = nextElement\n\n if (this._element.classList.contains(CLASS_NAME_SLIDE)) {\n nextElement.classList.add(orderClassName)\n\n reflow(nextElement)\n\n activeElement.classList.add(directionalClassName)\n nextElement.classList.add(directionalClassName)\n\n const transitionDuration = getTransitionDurationFromElement(activeElement)\n\n EventHandler.one(activeElement, TRANSITION_END, () => {\n nextElement.classList.remove(directionalClassName, orderClassName)\n nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n activeElement.classList.remove(CLASS_NAME_ACTIVE, orderClassName, directionalClassName)\n\n this._isSliding = false\n\n setTimeout(() => {\n EventHandler.trigger(this._element, EVENT_SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n })\n }, 0)\n })\n\n emulateTransitionEnd(activeElement, transitionDuration)\n } else {\n activeElement.classList.remove(CLASS_NAME_ACTIVE)\n nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n this._isSliding = false\n EventHandler.trigger(this._element, EVENT_SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n })\n }\n\n if (isCycling) {\n this.cycle()\n }\n }\n\n // Static\n\n static carouselInterface(element, config) {\n let data = Data.getData(element, DATA_KEY)\n let _config = {\n ...Default,\n ...Manipulator.getDataAttributes(element)\n }\n\n if (typeof config === 'object') {\n _config = {\n ..._config,\n ...config\n }\n }\n\n const action = typeof config === 'string' ? config : _config.slide\n\n if (!data) {\n data = new Carousel(element, _config)\n }\n\n if (typeof config === 'number') {\n data.to(config)\n } else if (typeof action === 'string') {\n if (typeof data[action] === 'undefined') {\n throw new TypeError(`No method named \"${action}\"`)\n }\n\n data[action]()\n } else if (_config.interval && _config.ride) {\n data.pause()\n data.cycle()\n }\n }\n\n static jQueryInterface(config) {\n return this.each(function () {\n Carousel.carouselInterface(this, config)\n })\n }\n\n static dataApiClickHandler(event) {\n const target = getElementFromSelector(this)\n\n if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n return\n }\n\n const config = {\n ...Manipulator.getDataAttributes(target),\n ...Manipulator.getDataAttributes(this)\n }\n const slideIndex = this.getAttribute('data-bs-slide-to')\n\n if (slideIndex) {\n config.interval = false\n }\n\n Carousel.carouselInterface(target, config)\n\n if (slideIndex) {\n Data.getData(target, DATA_KEY).to(slideIndex)\n }\n\n event.preventDefault()\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, Carousel.dataApiClickHandler)\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE)\n\n for (let i = 0, len = carousels.length; i < len; i++) {\n Carousel.carouselInterface(carousels[i], Data.getData(carousels[i], DATA_KEY))\n }\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Carousel to jQuery only if jQuery is present\n */\n\nonDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Carousel.jQueryInterface\n $.fn[NAME].Constructor = Carousel\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Carousel.jQueryInterface\n }\n }\n})\n\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n getjQuery,\n onDOMContentLoaded,\n TRANSITION_END,\n emulateTransitionEnd,\n getSelectorFromElement,\n getElementFromSelector,\n getTransitionDurationFromElement,\n isElement,\n reflow,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'collapse'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst Default = {\n toggle: true,\n parent: ''\n}\n\nconst DefaultType = {\n toggle: 'boolean',\n parent: '(string|element)'\n}\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_COLLAPSE = 'collapse'\nconst CLASS_NAME_COLLAPSING = 'collapsing'\nconst CLASS_NAME_COLLAPSED = 'collapsed'\n\nconst WIDTH = 'width'\nconst HEIGHT = 'height'\n\nconst SELECTOR_ACTIVES = '.show, .collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"collapse\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Collapse extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._isTransitioning = false\n this._config = this._getConfig(config)\n this._triggerArray = SelectorEngine.find(\n `${SELECTOR_DATA_TOGGLE}[href=\"#${element.id}\"],` +\n `${SELECTOR_DATA_TOGGLE}[data-bs-target=\"#${element.id}\"]`\n )\n\n const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n for (let i = 0, len = toggleList.length; i < len; i++) {\n const elem = toggleList[i]\n const selector = getSelectorFromElement(elem)\n const filterElement = SelectorEngine.find(selector)\n .filter(foundElem => foundElem === element)\n\n if (selector !== null && filterElement.length) {\n this._selector = selector\n this._triggerArray.push(elem)\n }\n }\n\n this._parent = this._config.parent ? this._getParent() : null\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._element, this._triggerArray)\n }\n\n if (this._config.toggle) {\n this.toggle()\n }\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n toggle() {\n if (this._element.classList.contains(CLASS_NAME_SHOW)) {\n this.hide()\n } else {\n this.show()\n }\n }\n\n show() {\n if (this._isTransitioning || this._element.classList.contains(CLASS_NAME_SHOW)) {\n return\n }\n\n let actives\n let activesData\n\n if (this._parent) {\n actives = SelectorEngine.find(SELECTOR_ACTIVES, this._parent)\n .filter(elem => {\n if (typeof this._config.parent === 'string') {\n return elem.getAttribute('data-bs-parent') === this._config.parent\n }\n\n return elem.classList.contains(CLASS_NAME_COLLAPSE)\n })\n\n if (actives.length === 0) {\n actives = null\n }\n }\n\n const container = SelectorEngine.findOne(this._selector)\n if (actives) {\n const tempActiveData = actives.find(elem => container !== elem)\n activesData = tempActiveData ? Data.getData(tempActiveData, DATA_KEY) : null\n\n if (activesData && activesData._isTransitioning) {\n return\n }\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n if (startEvent.defaultPrevented) {\n return\n }\n\n if (actives) {\n actives.forEach(elemActive => {\n if (container !== elemActive) {\n Collapse.collapseInterface(elemActive, 'hide')\n }\n\n if (!activesData) {\n Data.setData(elemActive, DATA_KEY, null)\n }\n })\n }\n\n const dimension = this._getDimension()\n\n this._element.classList.remove(CLASS_NAME_COLLAPSE)\n this._element.classList.add(CLASS_NAME_COLLAPSING)\n\n this._element.style[dimension] = 0\n\n if (this._triggerArray.length) {\n this._triggerArray.forEach(element => {\n element.classList.remove(CLASS_NAME_COLLAPSED)\n element.setAttribute('aria-expanded', true)\n })\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n this._element.classList.remove(CLASS_NAME_COLLAPSING)\n this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n this._element.style[dimension] = ''\n\n this.setTransitioning(false)\n\n EventHandler.trigger(this._element, EVENT_SHOWN)\n }\n\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n const scrollSize = `scroll${capitalizedDimension}`\n const transitionDuration = getTransitionDurationFromElement(this._element)\n\n EventHandler.one(this._element, TRANSITION_END, complete)\n\n emulateTransitionEnd(this._element, transitionDuration)\n this._element.style[dimension] = `${this._element[scrollSize]}px`\n }\n\n hide() {\n if (this._isTransitioning || !this._element.classList.contains(CLASS_NAME_SHOW)) {\n return\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n if (startEvent.defaultPrevented) {\n return\n }\n\n const dimension = this._getDimension()\n\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n reflow(this._element)\n\n this._element.classList.add(CLASS_NAME_COLLAPSING)\n this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n const triggerArrayLength = this._triggerArray.length\n if (triggerArrayLength > 0) {\n for (let i = 0; i < triggerArrayLength; i++) {\n const trigger = this._triggerArray[i]\n const elem = getElementFromSelector(trigger)\n\n if (elem && !elem.classList.contains(CLASS_NAME_SHOW)) {\n trigger.classList.add(CLASS_NAME_COLLAPSED)\n trigger.setAttribute('aria-expanded', false)\n }\n }\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n this.setTransitioning(false)\n this._element.classList.remove(CLASS_NAME_COLLAPSING)\n this._element.classList.add(CLASS_NAME_COLLAPSE)\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n this._element.style[dimension] = ''\n const transitionDuration = getTransitionDurationFromElement(this._element)\n\n EventHandler.one(this._element, TRANSITION_END, complete)\n emulateTransitionEnd(this._element, transitionDuration)\n }\n\n setTransitioning(isTransitioning) {\n this._isTransitioning = isTransitioning\n }\n\n dispose() {\n super.dispose()\n this._config = null\n this._parent = null\n this._triggerArray = null\n this._isTransitioning = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n config.toggle = Boolean(config.toggle) // Coerce string values\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _getDimension() {\n return this._element.classList.contains(WIDTH) ? WIDTH : HEIGHT\n }\n\n _getParent() {\n let { parent } = this._config\n\n if (isElement(parent)) {\n // it's a jQuery object\n if (typeof parent.jquery !== 'undefined' || typeof parent[0] !== 'undefined') {\n parent = parent[0]\n }\n } else {\n parent = SelectorEngine.findOne(parent)\n }\n\n const selector = `${SELECTOR_DATA_TOGGLE}[data-bs-parent=\"${parent}\"]`\n\n SelectorEngine.find(selector, parent)\n .forEach(element => {\n const selected = getElementFromSelector(element)\n\n this._addAriaAndCollapsedClass(\n selected,\n [element]\n )\n })\n\n return parent\n }\n\n _addAriaAndCollapsedClass(element, triggerArray) {\n if (!element || !triggerArray.length) {\n return\n }\n\n const isOpen = element.classList.contains(CLASS_NAME_SHOW)\n\n triggerArray.forEach(elem => {\n if (isOpen) {\n elem.classList.remove(CLASS_NAME_COLLAPSED)\n } else {\n elem.classList.add(CLASS_NAME_COLLAPSED)\n }\n\n elem.setAttribute('aria-expanded', isOpen)\n })\n }\n\n // Static\n\n static collapseInterface(element, config) {\n let data = Data.getData(element, DATA_KEY)\n const _config = {\n ...Default,\n ...Manipulator.getDataAttributes(element),\n ...(typeof config === 'object' && config ? config : {})\n }\n\n if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false\n }\n\n if (!data) {\n data = new Collapse(element, _config)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n }\n\n static jQueryInterface(config) {\n return this.each(function () {\n Collapse.collapseInterface(this, config)\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n // preventDefault only for elements (which change the URL) not inside the collapsible element\n if (event.target.tagName === 'A') {\n event.preventDefault()\n }\n\n const triggerData = Manipulator.getDataAttributes(this)\n const selector = getSelectorFromElement(this)\n const selectorElements = SelectorEngine.find(selector)\n\n selectorElements.forEach(element => {\n const data = Data.getData(element, DATA_KEY)\n let config\n if (data) {\n // update parent attribute\n if (data._parent === null && typeof triggerData.parent === 'string') {\n data._config.parent = triggerData.parent\n data._parent = data._getParent()\n }\n\n config = 'toggle'\n } else {\n config = triggerData\n }\n\n Collapse.collapseInterface(element, config)\n })\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Collapse to jQuery only if jQuery is present\n */\n\nonDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Collapse.jQueryInterface\n $.fn[NAME].Constructor = Collapse\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Collapse.jQueryInterface\n }\n }\n})\n\nexport default Collapse\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\n\nimport {\n getjQuery,\n onDOMContentLoaded,\n getElementFromSelector,\n isElement,\n isVisible,\n isRTL,\n noop,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'dropdown'\nconst DATA_KEY = 'bs.dropdown'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst SPACE_KEY = 'Space'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst RIGHT_MOUSE_BUTTON = 2 // MouseEvent.button value for the secondary button, usually the right button\n\nconst REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEY}|${ARROW_DOWN_KEY}|${ESCAPE_KEY}`)\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK = `click${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DISABLED = 'disabled'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_DROPUP = 'dropup'\nconst CLASS_NAME_DROPEND = 'dropend'\nconst CLASS_NAME_DROPSTART = 'dropstart'\nconst CLASS_NAME_NAVBAR = 'navbar'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dropdown\"]'\nconst SELECTOR_FORM_CHILD = '.dropdown form'\nconst SELECTOR_MENU = '.dropdown-menu'\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav'\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n\nconst PLACEMENT_TOP = isRTL ? 'top-end' : 'top-start'\nconst PLACEMENT_TOPEND = isRTL ? 'top-start' : 'top-end'\nconst PLACEMENT_BOTTOM = isRTL ? 'bottom-end' : 'bottom-start'\nconst PLACEMENT_BOTTOMEND = isRTL ? 'bottom-start' : 'bottom-end'\nconst PLACEMENT_RIGHT = isRTL ? 'left-start' : 'right-start'\nconst PLACEMENT_LEFT = isRTL ? 'right-start' : 'left-start'\n\nconst Default = {\n offset: 0,\n flip: true,\n boundary: 'clippingParents',\n reference: 'toggle',\n display: 'dynamic',\n popperConfig: null\n}\n\nconst DefaultType = {\n offset: '(number|string|function)',\n flip: 'boolean',\n boundary: '(string|element)',\n reference: '(string|element)',\n display: 'string',\n popperConfig: '(null|object)'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Dropdown extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._popper = null\n this._config = this._getConfig(config)\n this._menu = this._getMenuElement()\n this._inNavbar = this._detectNavbar()\n\n this._addEventListeners()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n toggle() {\n if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED)) {\n return\n }\n\n const isActive = this._element.classList.contains(CLASS_NAME_SHOW)\n\n Dropdown.clearMenus()\n\n if (isActive) {\n return\n }\n\n this.show()\n }\n\n show() {\n if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED) || this._menu.classList.contains(CLASS_NAME_SHOW)) {\n return\n }\n\n const parent = Dropdown.getParentFromElement(this._element)\n const relatedTarget = {\n relatedTarget: this._element\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, relatedTarget)\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n // Totally disable Popper for Dropdowns in Navbar\n if (!this._inNavbar) {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)')\n }\n\n let referenceElement = this._element\n\n if (this._config.reference === 'parent') {\n referenceElement = parent\n } else if (isElement(this._config.reference)) {\n referenceElement = this._config.reference\n\n // Check if it's jQuery element\n if (typeof this._config.reference.jquery !== 'undefined') {\n referenceElement = this._config.reference[0]\n }\n }\n\n this._popper = Popper.createPopper(referenceElement, this._menu, this._getPopperConfig())\n }\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement &&\n !parent.closest(SELECTOR_NAVBAR_NAV)) {\n [].concat(...document.body.children)\n .forEach(elem => EventHandler.on(elem, 'mouseover', null, noop()))\n }\n\n this._element.focus()\n this._element.setAttribute('aria-expanded', true)\n\n this._menu.classList.toggle(CLASS_NAME_SHOW)\n this._element.classList.toggle(CLASS_NAME_SHOW)\n EventHandler.trigger(parent, EVENT_SHOWN, relatedTarget)\n }\n\n hide() {\n if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED) || !this._menu.classList.contains(CLASS_NAME_SHOW)) {\n return\n }\n\n const parent = Dropdown.getParentFromElement(this._element)\n const relatedTarget = {\n relatedTarget: this._element\n }\n\n const hideEvent = EventHandler.trigger(parent, EVENT_HIDE, relatedTarget)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n if (this._popper) {\n this._popper.destroy()\n }\n\n this._menu.classList.toggle(CLASS_NAME_SHOW)\n this._element.classList.toggle(CLASS_NAME_SHOW)\n EventHandler.trigger(parent, EVENT_HIDDEN, relatedTarget)\n }\n\n dispose() {\n super.dispose()\n EventHandler.off(this._element, EVENT_KEY)\n this._menu = null\n\n if (this._popper) {\n this._popper.destroy()\n this._popper = null\n }\n }\n\n update() {\n this._inNavbar = this._detectNavbar()\n if (this._popper) {\n this._popper.update()\n }\n }\n\n // Private\n\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_CLICK, event => {\n event.preventDefault()\n event.stopPropagation()\n this.toggle()\n })\n }\n\n _getConfig(config) {\n config = {\n ...this.constructor.Default,\n ...Manipulator.getDataAttributes(this._element),\n ...config\n }\n\n typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n return config\n }\n\n _getMenuElement() {\n return SelectorEngine.next(this._element, SELECTOR_MENU)[0]\n }\n\n _getPlacement() {\n const parentDropdown = this._element.parentNode\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {\n return PLACEMENT_RIGHT\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {\n return PLACEMENT_LEFT\n }\n\n // We need to trim the value because custom properties can also include spaces\n const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end'\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {\n return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP\n }\n\n return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM\n }\n\n _detectNavbar() {\n return this._element.closest(`.${CLASS_NAME_NAVBAR}`) !== null\n }\n\n _getPopperConfig() {\n const popperConfig = {\n placement: this._getPlacement(),\n modifiers: [{\n name: 'preventOverflow',\n options: {\n altBoundary: this._config.flip,\n rootBoundary: this._config.boundary\n }\n }]\n }\n\n // Disable Popper if we have a static display\n if (this._config.display === 'static') {\n popperConfig.modifiers = [{\n name: 'applyStyles',\n enabled: false\n }]\n }\n\n return {\n ...popperConfig,\n ...this._config.popperConfig\n }\n }\n\n // Static\n\n static dropdownInterface(element, config) {\n let data = Data.getData(element, DATA_KEY)\n const _config = typeof config === 'object' ? config : null\n\n if (!data) {\n data = new Dropdown(element, _config)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n }\n\n static jQueryInterface(config) {\n return this.each(function () {\n Dropdown.dropdownInterface(this, config)\n })\n }\n\n static clearMenus(event) {\n if (event && (event.button === RIGHT_MOUSE_BUTTON || (event.type === 'keyup' && event.key !== TAB_KEY))) {\n return\n }\n\n const toggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n for (let i = 0, len = toggles.length; i < len; i++) {\n const parent = Dropdown.getParentFromElement(toggles[i])\n const context = Data.getData(toggles[i], DATA_KEY)\n const relatedTarget = {\n relatedTarget: toggles[i]\n }\n\n if (event && event.type === 'click') {\n relatedTarget.clickEvent = event\n }\n\n if (!context) {\n continue\n }\n\n const dropdownMenu = context._menu\n if (!toggles[i].classList.contains(CLASS_NAME_SHOW)) {\n continue\n }\n\n if (event && ((event.type === 'click' &&\n /input|textarea/i.test(event.target.tagName)) ||\n (event.type === 'keyup' && event.key === TAB_KEY)) &&\n dropdownMenu.contains(event.target)) {\n continue\n }\n\n const hideEvent = EventHandler.trigger(parent, EVENT_HIDE, relatedTarget)\n if (hideEvent.defaultPrevented) {\n continue\n }\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n [].concat(...document.body.children)\n .forEach(elem => EventHandler.off(elem, 'mouseover', null, noop()))\n }\n\n toggles[i].setAttribute('aria-expanded', 'false')\n\n if (context._popper) {\n context._popper.destroy()\n }\n\n dropdownMenu.classList.remove(CLASS_NAME_SHOW)\n toggles[i].classList.remove(CLASS_NAME_SHOW)\n EventHandler.trigger(parent, EVENT_HIDDEN, relatedTarget)\n }\n }\n\n static getParentFromElement(element) {\n return getElementFromSelector(element) || element.parentNode\n }\n\n static dataApiKeydownHandler(event) {\n // If not input/textarea:\n // - And not a key in REGEXP_KEYDOWN => not a dropdown command\n // If input/textarea:\n // - If space key => not a dropdown command\n // - If key is other than escape\n // - If key is not up or down => not a dropdown command\n // - If trigger inside the menu => not a dropdown command\n if (/input|textarea/i.test(event.target.tagName) ?\n event.key === SPACE_KEY || (event.key !== ESCAPE_KEY &&\n ((event.key !== ARROW_DOWN_KEY && event.key !== ARROW_UP_KEY) ||\n event.target.closest(SELECTOR_MENU))) :\n !REGEXP_KEYDOWN.test(event.key)) {\n return\n }\n\n event.preventDefault()\n event.stopPropagation()\n\n if (this.disabled || this.classList.contains(CLASS_NAME_DISABLED)) {\n return\n }\n\n const parent = Dropdown.getParentFromElement(this)\n const isActive = this.classList.contains(CLASS_NAME_SHOW)\n\n if (event.key === ESCAPE_KEY) {\n const button = this.matches(SELECTOR_DATA_TOGGLE) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0]\n button.focus()\n Dropdown.clearMenus()\n return\n }\n\n if (!isActive || event.key === SPACE_KEY) {\n Dropdown.clearMenus()\n return\n }\n\n const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, parent).filter(isVisible)\n\n if (!items.length) {\n return\n }\n\n let index = items.indexOf(event.target)\n\n // Up\n if (event.key === ARROW_UP_KEY && index > 0) {\n index--\n }\n\n // Down\n if (event.key === ARROW_DOWN_KEY && index < items.length - 1) {\n index++\n }\n\n // index is -1 if the first keydown is an ArrowUp\n index = index === -1 ? 0 : index\n\n items[index].focus()\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_CLICK_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n event.preventDefault()\n event.stopPropagation()\n Dropdown.dropdownInterface(this, 'toggle')\n})\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_FORM_CHILD, e => e.stopPropagation())\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Dropdown to jQuery only if jQuery is present\n */\n\nonDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Dropdown.jQueryInterface\n $.fn[NAME].Constructor = Dropdown\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Dropdown.jQueryInterface\n }\n }\n})\n\nexport default Dropdown\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n getjQuery,\n onDOMContentLoaded,\n TRANSITION_END,\n emulateTransitionEnd,\n getElementFromSelector,\n getTransitionDurationFromElement,\n isVisible,\n isRTL,\n reflow,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'modal'\nconst DATA_KEY = 'bs.modal'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst ESCAPE_KEY = 'Escape'\n\nconst Default = {\n backdrop: true,\n keyboard: true,\n focus: true\n}\n\nconst DefaultType = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n focus: 'boolean'\n}\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEUP_DISMISS = `mouseup.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SCROLLBAR_MEASURER = 'modal-scrollbar-measure'\nconst CLASS_NAME_BACKDROP = 'modal-backdrop'\nconst CLASS_NAME_OPEN = 'modal-open'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_STATIC = 'modal-static'\n\nconst SELECTOR_DIALOG = '.modal-dialog'\nconst SELECTOR_MODAL_BODY = '.modal-body'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"modal\"]'\nconst SELECTOR_DATA_DISMISS = '[data-bs-dismiss=\"modal\"]'\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Modal extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._config = this._getConfig(config)\n this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, element)\n this._backdrop = null\n this._isShown = false\n this._isBodyOverflowing = false\n this._ignoreBackdropClick = false\n this._isTransitioning = false\n this._scrollbarWidth = 0\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget)\n }\n\n show(relatedTarget) {\n if (this._isShown || this._isTransitioning) {\n return\n }\n\n if (this._element.classList.contains(CLASS_NAME_FADE)) {\n this._isTransitioning = true\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n relatedTarget\n })\n\n if (this._isShown || showEvent.defaultPrevented) {\n return\n }\n\n this._isShown = true\n\n this._checkScrollbar()\n this._setScrollbar()\n\n this._adjustDialog()\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n EventHandler.on(this._element, EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, event => this.hide(event))\n\n EventHandler.on(this._dialog, EVENT_MOUSEDOWN_DISMISS, () => {\n EventHandler.one(this._element, EVENT_MOUSEUP_DISMISS, event => {\n if (event.target === this._element) {\n this._ignoreBackdropClick = true\n }\n })\n })\n\n this._showBackdrop(() => this._showElement(relatedTarget))\n }\n\n hide(event) {\n if (event) {\n event.preventDefault()\n }\n\n if (!this._isShown || this._isTransitioning) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n this._isShown = false\n const transition = this._element.classList.contains(CLASS_NAME_FADE)\n\n if (transition) {\n this._isTransitioning = true\n }\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n EventHandler.off(document, EVENT_FOCUSIN)\n\n this._element.classList.remove(CLASS_NAME_SHOW)\n\n EventHandler.off(this._element, EVENT_CLICK_DISMISS)\n EventHandler.off(this._dialog, EVENT_MOUSEDOWN_DISMISS)\n\n if (transition) {\n const transitionDuration = getTransitionDurationFromElement(this._element)\n\n EventHandler.one(this._element, TRANSITION_END, event => this._hideModal(event))\n emulateTransitionEnd(this._element, transitionDuration)\n } else {\n this._hideModal()\n }\n }\n\n dispose() {\n [window, this._element, this._dialog]\n .forEach(htmlElement => EventHandler.off(htmlElement, EVENT_KEY))\n\n super.dispose()\n\n /**\n * `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API`\n * Do not move `document` in `htmlElements` array\n * It will remove `EVENT_CLICK_DATA_API` event that should remain\n */\n EventHandler.off(document, EVENT_FOCUSIN)\n\n this._config = null\n this._dialog = null\n this._backdrop = null\n this._isShown = null\n this._isBodyOverflowing = null\n this._ignoreBackdropClick = null\n this._isTransitioning = null\n this._scrollbarWidth = null\n }\n\n handleUpdate() {\n this._adjustDialog()\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _showElement(relatedTarget) {\n const transition = this._element.classList.contains(CLASS_NAME_FADE)\n const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog)\n\n if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n // Don't move modal's DOM position\n document.body.appendChild(this._element)\n }\n\n this._element.style.display = 'block'\n this._element.removeAttribute('aria-hidden')\n this._element.setAttribute('aria-modal', true)\n this._element.setAttribute('role', 'dialog')\n this._element.scrollTop = 0\n\n if (modalBody) {\n modalBody.scrollTop = 0\n }\n\n if (transition) {\n reflow(this._element)\n }\n\n this._element.classList.add(CLASS_NAME_SHOW)\n\n if (this._config.focus) {\n this._enforceFocus()\n }\n\n const transitionComplete = () => {\n if (this._config.focus) {\n this._element.focus()\n }\n\n this._isTransitioning = false\n EventHandler.trigger(this._element, EVENT_SHOWN, {\n relatedTarget\n })\n }\n\n if (transition) {\n const transitionDuration = getTransitionDurationFromElement(this._dialog)\n\n EventHandler.one(this._dialog, TRANSITION_END, transitionComplete)\n emulateTransitionEnd(this._dialog, transitionDuration)\n } else {\n transitionComplete()\n }\n }\n\n _enforceFocus() {\n EventHandler.off(document, EVENT_FOCUSIN) // guard against infinite focus loop\n EventHandler.on(document, EVENT_FOCUSIN, event => {\n if (document !== event.target &&\n this._element !== event.target &&\n !this._element.contains(event.target)) {\n this._element.focus()\n }\n })\n }\n\n _setEscapeEvent() {\n if (this._isShown) {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n if (this._config.keyboard && event.key === ESCAPE_KEY) {\n event.preventDefault()\n this.hide()\n } else if (!this._config.keyboard && event.key === ESCAPE_KEY) {\n this._triggerBackdropTransition()\n }\n })\n } else {\n EventHandler.off(this._element, EVENT_KEYDOWN_DISMISS)\n }\n }\n\n _setResizeEvent() {\n if (this._isShown) {\n EventHandler.on(window, EVENT_RESIZE, () => this._adjustDialog())\n } else {\n EventHandler.off(window, EVENT_RESIZE)\n }\n }\n\n _hideModal() {\n this._element.style.display = 'none'\n this._element.setAttribute('aria-hidden', true)\n this._element.removeAttribute('aria-modal')\n this._element.removeAttribute('role')\n this._isTransitioning = false\n this._showBackdrop(() => {\n document.body.classList.remove(CLASS_NAME_OPEN)\n this._resetAdjustments()\n this._resetScrollbar()\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n })\n }\n\n _removeBackdrop() {\n this._backdrop.parentNode.removeChild(this._backdrop)\n this._backdrop = null\n }\n\n _showBackdrop(callback) {\n const animate = this._element.classList.contains(CLASS_NAME_FADE) ?\n CLASS_NAME_FADE :\n ''\n\n if (this._isShown && this._config.backdrop) {\n this._backdrop = document.createElement('div')\n this._backdrop.className = CLASS_NAME_BACKDROP\n\n if (animate) {\n this._backdrop.classList.add(animate)\n }\n\n document.body.appendChild(this._backdrop)\n\n EventHandler.on(this._element, EVENT_CLICK_DISMISS, event => {\n if (this._ignoreBackdropClick) {\n this._ignoreBackdropClick = false\n return\n }\n\n if (event.target !== event.currentTarget) {\n return\n }\n\n if (this._config.backdrop === 'static') {\n this._triggerBackdropTransition()\n } else {\n this.hide()\n }\n })\n\n if (animate) {\n reflow(this._backdrop)\n }\n\n this._backdrop.classList.add(CLASS_NAME_SHOW)\n\n if (!animate) {\n callback()\n return\n }\n\n const backdropTransitionDuration = getTransitionDurationFromElement(this._backdrop)\n\n EventHandler.one(this._backdrop, TRANSITION_END, callback)\n emulateTransitionEnd(this._backdrop, backdropTransitionDuration)\n } else if (!this._isShown && this._backdrop) {\n this._backdrop.classList.remove(CLASS_NAME_SHOW)\n\n const callbackRemove = () => {\n this._removeBackdrop()\n callback()\n }\n\n if (this._element.classList.contains(CLASS_NAME_FADE)) {\n const backdropTransitionDuration = getTransitionDurationFromElement(this._backdrop)\n EventHandler.one(this._backdrop, TRANSITION_END, callbackRemove)\n emulateTransitionEnd(this._backdrop, backdropTransitionDuration)\n } else {\n callbackRemove()\n }\n } else {\n callback()\n }\n }\n\n _triggerBackdropTransition() {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n if (hideEvent.defaultPrevented) {\n return\n }\n\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n\n if (!isModalOverflowing) {\n this._element.style.overflowY = 'hidden'\n }\n\n this._element.classList.add(CLASS_NAME_STATIC)\n const modalTransitionDuration = getTransitionDurationFromElement(this._dialog)\n EventHandler.off(this._element, TRANSITION_END)\n EventHandler.one(this._element, TRANSITION_END, () => {\n this._element.classList.remove(CLASS_NAME_STATIC)\n if (!isModalOverflowing) {\n EventHandler.one(this._element, TRANSITION_END, () => {\n this._element.style.overflowY = ''\n })\n emulateTransitionEnd(this._element, modalTransitionDuration)\n }\n })\n emulateTransitionEnd(this._element, modalTransitionDuration)\n this._element.focus()\n }\n\n // ----------------------------------------------------------------------\n // the following methods are used to handle overflowing modals\n // ----------------------------------------------------------------------\n\n _adjustDialog() {\n const isModalOverflowing =\n this._element.scrollHeight > document.documentElement.clientHeight\n\n if ((!this._isBodyOverflowing && isModalOverflowing && !isRTL) || (this._isBodyOverflowing && !isModalOverflowing && isRTL)) {\n this._element.style.paddingLeft = `${this._scrollbarWidth}px`\n }\n\n if ((this._isBodyOverflowing && !isModalOverflowing && !isRTL) || (!this._isBodyOverflowing && isModalOverflowing && isRTL)) {\n this._element.style.paddingRight = `${this._scrollbarWidth}px`\n }\n }\n\n _resetAdjustments() {\n this._element.style.paddingLeft = ''\n this._element.style.paddingRight = ''\n }\n\n _checkScrollbar() {\n const rect = document.body.getBoundingClientRect()\n this._isBodyOverflowing = Math.round(rect.left + rect.right) < window.innerWidth\n this._scrollbarWidth = this._getScrollbarWidth()\n }\n\n _setScrollbar() {\n if (this._isBodyOverflowing) {\n // Note: DOMNode.style.paddingRight returns the actual value or '' if not set\n // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set\n\n // Adjust fixed content padding\n SelectorEngine.find(SELECTOR_FIXED_CONTENT)\n .forEach(element => {\n const actualPadding = element.style.paddingRight\n const calculatedPadding = window.getComputedStyle(element)['padding-right']\n Manipulator.setDataAttribute(element, 'padding-right', actualPadding)\n element.style.paddingRight = `${Number.parseFloat(calculatedPadding) + this._scrollbarWidth}px`\n })\n\n // Adjust sticky content margin\n SelectorEngine.find(SELECTOR_STICKY_CONTENT)\n .forEach(element => {\n const actualMargin = element.style.marginRight\n const calculatedMargin = window.getComputedStyle(element)['margin-right']\n Manipulator.setDataAttribute(element, 'margin-right', actualMargin)\n element.style.marginRight = `${Number.parseFloat(calculatedMargin) - this._scrollbarWidth}px`\n })\n\n // Adjust body padding\n const actualPadding = document.body.style.paddingRight\n const calculatedPadding = window.getComputedStyle(document.body)['padding-right']\n\n Manipulator.setDataAttribute(document.body, 'padding-right', actualPadding)\n document.body.style.paddingRight = `${Number.parseFloat(calculatedPadding) + this._scrollbarWidth}px`\n }\n\n document.body.classList.add(CLASS_NAME_OPEN)\n }\n\n _resetScrollbar() {\n // Restore fixed content padding\n SelectorEngine.find(SELECTOR_FIXED_CONTENT)\n .forEach(element => {\n const padding = Manipulator.getDataAttribute(element, 'padding-right')\n if (typeof padding !== 'undefined') {\n Manipulator.removeDataAttribute(element, 'padding-right')\n element.style.paddingRight = padding\n }\n })\n\n // Restore sticky content and navbar-toggler margin\n SelectorEngine.find(`${SELECTOR_STICKY_CONTENT}`)\n .forEach(element => {\n const margin = Manipulator.getDataAttribute(element, 'margin-right')\n if (typeof margin !== 'undefined') {\n Manipulator.removeDataAttribute(element, 'margin-right')\n element.style.marginRight = margin\n }\n })\n\n // Restore body padding\n const padding = Manipulator.getDataAttribute(document.body, 'padding-right')\n if (typeof padding === 'undefined') {\n document.body.style.paddingRight = ''\n } else {\n Manipulator.removeDataAttribute(document.body, 'padding-right')\n document.body.style.paddingRight = padding\n }\n }\n\n _getScrollbarWidth() { // thx d.walsh\n const scrollDiv = document.createElement('div')\n scrollDiv.className = CLASS_NAME_SCROLLBAR_MEASURER\n document.body.appendChild(scrollDiv)\n const scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth\n document.body.removeChild(scrollDiv)\n return scrollbarWidth\n }\n\n // Static\n\n static jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY)\n const _config = {\n ...Default,\n ...Manipulator.getDataAttributes(this),\n ...(typeof config === 'object' && config ? config : {})\n }\n\n if (!data) {\n data = new Modal(this, _config)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](relatedTarget)\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n const target = getElementFromSelector(this)\n\n if (this.tagName === 'A' || this.tagName === 'AREA') {\n event.preventDefault()\n }\n\n EventHandler.one(target, EVENT_SHOW, showEvent => {\n if (showEvent.defaultPrevented) {\n // only register focus restorer if modal will actually get shown\n return\n }\n\n EventHandler.one(target, EVENT_HIDDEN, () => {\n if (isVisible(this)) {\n this.focus()\n }\n })\n })\n\n let data = Data.getData(target, DATA_KEY)\n if (!data) {\n const config = {\n ...Manipulator.getDataAttributes(target),\n ...Manipulator.getDataAttributes(this)\n }\n\n data = new Modal(target, config)\n }\n\n data.show(this)\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Modal to jQuery only if jQuery is present\n */\n\nonDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Modal.jQueryInterface\n $.fn[NAME].Constructor = Modal\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Modal.jQueryInterface\n }\n }\n})\n\nexport default Modal\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst uriAttrs = new Set([\n 'background',\n 'cite',\n 'href',\n 'itemtype',\n 'longdesc',\n 'poster',\n 'src',\n 'xlink:href'\n])\n\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\n/**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/gi\n\n/**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i\n\nconst allowedAttribute = (attr, allowedAttributeList) => {\n const attrName = attr.nodeName.toLowerCase()\n\n if (allowedAttributeList.includes(attrName)) {\n if (uriAttrs.has(attrName)) {\n return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN))\n }\n\n return true\n }\n\n const regExp = allowedAttributeList.filter(attrRegex => attrRegex instanceof RegExp)\n\n // Check if a regular expression validates the attribute.\n for (let i = 0, len = regExp.length; i < len; i++) {\n if (attrName.match(regExp[i])) {\n return true\n }\n }\n\n return false\n}\n\nexport const DefaultAllowlist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n}\n\nexport function sanitizeHtml(unsafeHtml, allowList, sanitizeFn) {\n if (!unsafeHtml.length) {\n return unsafeHtml\n }\n\n if (sanitizeFn && typeof sanitizeFn === 'function') {\n return sanitizeFn(unsafeHtml)\n }\n\n const domParser = new window.DOMParser()\n const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n const allowlistKeys = Object.keys(allowList)\n const elements = [].concat(...createdDocument.body.querySelectorAll('*'))\n\n for (let i = 0, len = elements.length; i < len; i++) {\n const el = elements[i]\n const elName = el.nodeName.toLowerCase()\n\n if (!allowlistKeys.includes(elName)) {\n el.parentNode.removeChild(el)\n\n continue\n }\n\n const attributeList = [].concat(...el.attributes)\n const allowedAttributes = [].concat(allowList['*'] || [], allowList[elName] || [])\n\n attributeList.forEach(attr => {\n if (!allowedAttribute(attr, allowedAttributes)) {\n el.removeAttribute(attr.nodeName)\n }\n })\n }\n\n return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\n\nimport {\n getjQuery,\n onDOMContentLoaded,\n TRANSITION_END,\n emulateTransitionEnd,\n findShadowRoot,\n getTransitionDurationFromElement,\n getUID,\n isElement,\n isRTL,\n noop,\n typeCheckConfig\n} from './util/index'\nimport {\n DefaultAllowlist,\n sanitizeHtml\n} from './util/sanitizer'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tooltip'\nconst DATA_KEY = 'bs.tooltip'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst CLASS_PREFIX = 'bs-tooltip'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn'])\n\nconst DefaultType = {\n animation: 'boolean',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string',\n delay: '(number|object)',\n html: 'boolean',\n selector: '(string|boolean)',\n placement: '(string|function)',\n container: '(string|element|boolean)',\n fallbackPlacements: '(null|array)',\n boundary: '(string|element)',\n customClass: '(string|function)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n allowList: 'object',\n popperConfig: '(null|object)'\n}\n\nconst AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: isRTL ? 'left' : 'right',\n BOTTOM: 'bottom',\n LEFT: isRTL ? 'right' : 'left'\n}\n\nconst Default = {\n animation: true,\n template: '' +\n '' +\n '' +\n '',\n trigger: 'hover focus',\n title: '',\n delay: 0,\n html: false,\n selector: false,\n placement: 'top',\n container: false,\n fallbackPlacements: null,\n boundary: 'clippingParents',\n customClass: '',\n sanitize: true,\n sanitizeFn: null,\n allowList: DefaultAllowlist,\n popperConfig: null\n}\n\nconst Event = {\n HIDE: `hide${EVENT_KEY}`,\n HIDDEN: `hidden${EVENT_KEY}`,\n SHOW: `show${EVENT_KEY}`,\n SHOWN: `shown${EVENT_KEY}`,\n INSERTED: `inserted${EVENT_KEY}`,\n CLICK: `click${EVENT_KEY}`,\n FOCUSIN: `focusin${EVENT_KEY}`,\n FOCUSOUT: `focusout${EVENT_KEY}`,\n MOUSEENTER: `mouseenter${EVENT_KEY}`,\n MOUSELEAVE: `mouseleave${EVENT_KEY}`\n}\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_MODAL = 'modal'\nconst CLASS_NAME_SHOW = 'show'\n\nconst HOVER_STATE_SHOW = 'show'\nconst HOVER_STATE_OUT = 'out'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tooltip extends BaseComponent {\n constructor(element, config) {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)')\n }\n\n super(element)\n\n // private\n this._isEnabled = true\n this._timeout = 0\n this._hoverState = ''\n this._activeTrigger = {}\n this._popper = null\n\n // Protected\n this.config = this._getConfig(config)\n this.tip = null\n\n this._setListeners()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n static get Event() {\n return Event\n }\n\n static get EVENT_KEY() {\n return EVENT_KEY\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Public\n\n enable() {\n this._isEnabled = true\n }\n\n disable() {\n this._isEnabled = false\n }\n\n toggleEnabled() {\n this._isEnabled = !this._isEnabled\n }\n\n toggle(event) {\n if (!this._isEnabled) {\n return\n }\n\n if (event) {\n const dataKey = this.constructor.DATA_KEY\n let context = Data.getData(event.delegateTarget, dataKey)\n\n if (!context) {\n context = new this.constructor(event.delegateTarget, this._getDelegateConfig())\n Data.setData(event.delegateTarget, dataKey, context)\n }\n\n context._activeTrigger.click = !context._activeTrigger.click\n\n if (context._isWithActiveTrigger()) {\n context._enter(null, context)\n } else {\n context._leave(null, context)\n }\n } else {\n if (this.getTipElement().classList.contains(CLASS_NAME_SHOW)) {\n this._leave(null, this)\n return\n }\n\n this._enter(null, this)\n }\n }\n\n dispose() {\n clearTimeout(this._timeout)\n\n EventHandler.off(this._element, this.constructor.EVENT_KEY)\n EventHandler.off(this._element.closest(`.${CLASS_NAME_MODAL}`), 'hide.bs.modal', this._hideModalHandler)\n\n if (this.tip) {\n this.tip.parentNode.removeChild(this.tip)\n }\n\n this._isEnabled = null\n this._timeout = null\n this._hoverState = null\n this._activeTrigger = null\n if (this._popper) {\n this._popper.destroy()\n }\n\n this._popper = null\n this.config = null\n this.tip = null\n super.dispose()\n }\n\n show() {\n if (this._element.style.display === 'none') {\n throw new Error('Please use show on visible elements')\n }\n\n if (this.isWithContent() && this._isEnabled) {\n const showEvent = EventHandler.trigger(this._element, this.constructor.Event.SHOW)\n const shadowRoot = findShadowRoot(this._element)\n const isInTheDom = shadowRoot === null ?\n this._element.ownerDocument.documentElement.contains(this._element) :\n shadowRoot.contains(this._element)\n\n if (showEvent.defaultPrevented || !isInTheDom) {\n return\n }\n\n const tip = this.getTipElement()\n const tipId = getUID(this.constructor.NAME)\n\n tip.setAttribute('id', tipId)\n this._element.setAttribute('aria-describedby', tipId)\n\n this.setContent()\n\n if (this.config.animation) {\n tip.classList.add(CLASS_NAME_FADE)\n }\n\n const placement = typeof this.config.placement === 'function' ?\n this.config.placement.call(this, tip, this._element) :\n this.config.placement\n\n const attachment = this._getAttachment(placement)\n this._addAttachmentClass(attachment)\n\n const container = this._getContainer()\n Data.setData(tip, this.constructor.DATA_KEY, this)\n\n if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n container.appendChild(tip)\n }\n\n EventHandler.trigger(this._element, this.constructor.Event.INSERTED)\n\n this._popper = Popper.createPopper(this._element, tip, this._getPopperConfig(attachment))\n\n tip.classList.add(CLASS_NAME_SHOW)\n\n const customClass = typeof this.config.customClass === 'function' ? this.config.customClass() : this.config.customClass\n if (customClass) {\n tip.classList.add(...customClass.split(' '))\n }\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement) {\n [].concat(...document.body.children).forEach(element => {\n EventHandler.on(element, 'mouseover', noop())\n })\n }\n\n const complete = () => {\n const prevHoverState = this._hoverState\n\n this._hoverState = null\n EventHandler.trigger(this._element, this.constructor.Event.SHOWN)\n\n if (prevHoverState === HOVER_STATE_OUT) {\n this._leave(null, this)\n }\n }\n\n if (this.tip.classList.contains(CLASS_NAME_FADE)) {\n const transitionDuration = getTransitionDurationFromElement(this.tip)\n EventHandler.one(this.tip, TRANSITION_END, complete)\n emulateTransitionEnd(this.tip, transitionDuration)\n } else {\n complete()\n }\n }\n }\n\n hide() {\n if (!this._popper) {\n return\n }\n\n const tip = this.getTipElement()\n const complete = () => {\n if (this._hoverState !== HOVER_STATE_SHOW && tip.parentNode) {\n tip.parentNode.removeChild(tip)\n }\n\n this._cleanTipClass()\n this._element.removeAttribute('aria-describedby')\n EventHandler.trigger(this._element, this.constructor.Event.HIDDEN)\n\n if (this._popper) {\n this._popper.destroy()\n this._popper = null\n }\n }\n\n const hideEvent = EventHandler.trigger(this._element, this.constructor.Event.HIDE)\n if (hideEvent.defaultPrevented) {\n return\n }\n\n tip.classList.remove(CLASS_NAME_SHOW)\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n [].concat(...document.body.children)\n .forEach(element => EventHandler.off(element, 'mouseover', noop))\n }\n\n this._activeTrigger[TRIGGER_CLICK] = false\n this._activeTrigger[TRIGGER_FOCUS] = false\n this._activeTrigger[TRIGGER_HOVER] = false\n\n if (this.tip.classList.contains(CLASS_NAME_FADE)) {\n const transitionDuration = getTransitionDurationFromElement(tip)\n\n EventHandler.one(tip, TRANSITION_END, complete)\n emulateTransitionEnd(tip, transitionDuration)\n } else {\n complete()\n }\n\n this._hoverState = ''\n }\n\n update() {\n if (this._popper !== null) {\n this._popper.update()\n }\n }\n\n // Protected\n\n isWithContent() {\n return Boolean(this.getTitle())\n }\n\n getTipElement() {\n if (this.tip) {\n return this.tip\n }\n\n const element = document.createElement('div')\n element.innerHTML = this.config.template\n\n this.tip = element.children[0]\n return this.tip\n }\n\n setContent() {\n const tip = this.getTipElement()\n this.setElementContent(SelectorEngine.findOne(SELECTOR_TOOLTIP_INNER, tip), this.getTitle())\n tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n }\n\n setElementContent(element, content) {\n if (element === null) {\n return\n }\n\n if (typeof content === 'object' && isElement(content)) {\n if (content.jquery) {\n content = content[0]\n }\n\n // content is a DOM node or a jQuery\n if (this.config.html) {\n if (content.parentNode !== element) {\n element.innerHTML = ''\n element.appendChild(content)\n }\n } else {\n element.textContent = content.textContent\n }\n\n return\n }\n\n if (this.config.html) {\n if (this.config.sanitize) {\n content = sanitizeHtml(content, this.config.allowList, this.config.sanitizeFn)\n }\n\n element.innerHTML = content\n } else {\n element.textContent = content\n }\n }\n\n getTitle() {\n let title = this._element.getAttribute('data-bs-original-title')\n\n if (!title) {\n title = typeof this.config.title === 'function' ?\n this.config.title.call(this._element) :\n this.config.title\n }\n\n return title\n }\n\n updateAttachment(attachment) {\n if (attachment === 'right') {\n return 'end'\n }\n\n if (attachment === 'left') {\n return 'start'\n }\n\n return attachment\n }\n\n // Private\n\n _getPopperConfig(attachment) {\n const flipModifier = {\n name: 'flip',\n options: {\n altBoundary: true\n }\n }\n\n if (this.config.fallbackPlacements) {\n flipModifier.options.fallbackPlacements = this.config.fallbackPlacements\n }\n\n const defaultBsConfig = {\n placement: attachment,\n modifiers: [\n flipModifier,\n {\n name: 'preventOverflow',\n options: {\n rootBoundary: this.config.boundary\n }\n },\n {\n name: 'arrow',\n options: {\n element: `.${this.constructor.NAME}-arrow`\n }\n },\n {\n name: 'onChange',\n enabled: true,\n phase: 'afterWrite',\n fn: data => this._handlePopperPlacementChange(data)\n }\n ],\n onFirstUpdate: data => {\n if (data.options.placement !== data.placement) {\n this._handlePopperPlacementChange(data)\n }\n }\n }\n\n return {\n ...defaultBsConfig,\n ...this.config.popperConfig\n }\n }\n\n _addAttachmentClass(attachment) {\n this.getTipElement().classList.add(`${CLASS_PREFIX}-${this.updateAttachment(attachment)}`)\n }\n\n _getContainer() {\n if (this.config.container === false) {\n return document.body\n }\n\n if (isElement(this.config.container)) {\n return this.config.container\n }\n\n return SelectorEngine.findOne(this.config.container)\n }\n\n _getAttachment(placement) {\n return AttachmentMap[placement.toUpperCase()]\n }\n\n _setListeners() {\n const triggers = this.config.trigger.split(' ')\n\n triggers.forEach(trigger => {\n if (trigger === 'click') {\n EventHandler.on(this._element, this.constructor.Event.CLICK, this.config.selector, event => this.toggle(event)\n )\n } else if (trigger !== TRIGGER_MANUAL) {\n const eventIn = trigger === TRIGGER_HOVER ?\n this.constructor.Event.MOUSEENTER :\n this.constructor.Event.FOCUSIN\n const eventOut = trigger === TRIGGER_HOVER ?\n this.constructor.Event.MOUSELEAVE :\n this.constructor.Event.FOCUSOUT\n\n EventHandler.on(this._element, eventIn, this.config.selector, event => this._enter(event))\n EventHandler.on(this._element, eventOut, this.config.selector, event => this._leave(event))\n }\n })\n\n this._hideModalHandler = () => {\n if (this._element) {\n this.hide()\n }\n }\n\n EventHandler.on(this._element.closest(`.${CLASS_NAME_MODAL}`), 'hide.bs.modal', this._hideModalHandler)\n\n if (this.config.selector) {\n this.config = {\n ...this.config,\n trigger: 'manual',\n selector: ''\n }\n } else {\n this._fixTitle()\n }\n }\n\n _fixTitle() {\n const title = this._element.getAttribute('title')\n const originalTitleType = typeof this._element.getAttribute('data-bs-original-title')\n\n if (title || originalTitleType !== 'string') {\n this._element.setAttribute('data-bs-original-title', title || '')\n if (title && !this._element.getAttribute('aria-label') && !this._element.textContent) {\n this._element.setAttribute('aria-label', title)\n }\n\n this._element.setAttribute('title', '')\n }\n }\n\n _enter(event, context) {\n const dataKey = this.constructor.DATA_KEY\n context = context || Data.getData(event.delegateTarget, dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.delegateTarget,\n this._getDelegateConfig()\n )\n Data.setData(event.delegateTarget, dataKey, context)\n }\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER\n ] = true\n }\n\n if (context.getTipElement().classList.contains(CLASS_NAME_SHOW) || context._hoverState === HOVER_STATE_SHOW) {\n context._hoverState = HOVER_STATE_SHOW\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HOVER_STATE_SHOW\n\n if (!context.config.delay || !context.config.delay.show) {\n context.show()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HOVER_STATE_SHOW) {\n context.show()\n }\n }, context.config.delay.show)\n }\n\n _leave(event, context) {\n const dataKey = this.constructor.DATA_KEY\n context = context || Data.getData(event.delegateTarget, dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.delegateTarget,\n this._getDelegateConfig()\n )\n Data.setData(event.delegateTarget, dataKey, context)\n }\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER\n ] = false\n }\n\n if (context._isWithActiveTrigger()) {\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HOVER_STATE_OUT\n\n if (!context.config.delay || !context.config.delay.hide) {\n context.hide()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HOVER_STATE_OUT) {\n context.hide()\n }\n }, context.config.delay.hide)\n }\n\n _isWithActiveTrigger() {\n for (const trigger in this._activeTrigger) {\n if (this._activeTrigger[trigger]) {\n return true\n }\n }\n\n return false\n }\n\n _getConfig(config) {\n const dataAttributes = Manipulator.getDataAttributes(this._element)\n\n Object.keys(dataAttributes).forEach(dataAttr => {\n if (DISALLOWED_ATTRIBUTES.has(dataAttr)) {\n delete dataAttributes[dataAttr]\n }\n })\n\n if (config && typeof config.container === 'object' && config.container.jquery) {\n config.container = config.container[0]\n }\n\n config = {\n ...this.constructor.Default,\n ...dataAttributes,\n ...(typeof config === 'object' && config ? config : {})\n }\n\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n }\n }\n\n if (typeof config.title === 'number') {\n config.title = config.title.toString()\n }\n\n if (typeof config.content === 'number') {\n config.content = config.content.toString()\n }\n\n typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n if (config.sanitize) {\n config.template = sanitizeHtml(config.template, config.allowList, config.sanitizeFn)\n }\n\n return config\n }\n\n _getDelegateConfig() {\n const config = {}\n\n if (this.config) {\n for (const key in this.config) {\n if (this.constructor.Default[key] !== this.config[key]) {\n config[key] = this.config[key]\n }\n }\n }\n\n return config\n }\n\n _cleanTipClass() {\n const tip = this.getTipElement()\n const tabClass = tip.getAttribute('class').match(BSCLS_PREFIX_REGEX)\n if (tabClass !== null && tabClass.length > 0) {\n tabClass.map(token => token.trim())\n .forEach(tClass => tip.classList.remove(tClass))\n }\n }\n\n _handlePopperPlacementChange(popperData) {\n const { state } = popperData\n\n if (!state) {\n return\n }\n\n this.tip = state.elements.popper\n this._cleanTipClass()\n this._addAttachmentClass(this._getAttachment(state.placement))\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY)\n const _config = typeof config === 'object' && config\n\n if (!data && /dispose|hide/.test(config)) {\n return\n }\n\n if (!data) {\n data = new Tooltip(this, _config)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Tooltip to jQuery only if jQuery is present\n */\n\nonDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Tooltip.jQueryInterface\n $.fn[NAME].Constructor = Tooltip\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Tooltip.jQueryInterface\n }\n }\n})\n\nexport default Tooltip\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery, onDOMContentLoaded } from './util/index'\nimport Data from './dom/data'\nimport SelectorEngine from './dom/selector-engine'\nimport Tooltip from './tooltip'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'popover'\nconst DATA_KEY = 'bs.popover'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst CLASS_PREFIX = 'bs-popover'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\n\nconst Default = {\n ...Tooltip.Default,\n placement: 'right',\n trigger: 'click',\n content: '',\n template: '' +\n '' +\n '' +\n '' +\n ''\n}\n\nconst DefaultType = {\n ...Tooltip.DefaultType,\n content: '(string|element|function)'\n}\n\nconst Event = {\n HIDE: `hide${EVENT_KEY}`,\n HIDDEN: `hidden${EVENT_KEY}`,\n SHOW: `show${EVENT_KEY}`,\n SHOWN: `shown${EVENT_KEY}`,\n INSERTED: `inserted${EVENT_KEY}`,\n CLICK: `click${EVENT_KEY}`,\n FOCUSIN: `focusin${EVENT_KEY}`,\n FOCUSOUT: `focusout${EVENT_KEY}`,\n MOUSEENTER: `mouseenter${EVENT_KEY}`,\n MOUSELEAVE: `mouseleave${EVENT_KEY}`\n}\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Popover extends Tooltip {\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n static get Event() {\n return Event\n }\n\n static get EVENT_KEY() {\n return EVENT_KEY\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Overrides\n\n isWithContent() {\n return this.getTitle() || this._getContent()\n }\n\n setContent() {\n const tip = this.getTipElement()\n\n // we use append for html objects to maintain js events\n this.setElementContent(SelectorEngine.findOne(SELECTOR_TITLE, tip), this.getTitle())\n let content = this._getContent()\n if (typeof content === 'function') {\n content = content.call(this._element)\n }\n\n this.setElementContent(SelectorEngine.findOne(SELECTOR_CONTENT, tip), content)\n\n tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n }\n\n // Private\n\n _addAttachmentClass(attachment) {\n this.getTipElement().classList.add(`${CLASS_PREFIX}-${this.updateAttachment(attachment)}`)\n }\n\n _getContent() {\n return this._element.getAttribute('data-bs-content') || this.config.content\n }\n\n _cleanTipClass() {\n const tip = this.getTipElement()\n const tabClass = tip.getAttribute('class').match(BSCLS_PREFIX_REGEX)\n if (tabClass !== null && tabClass.length > 0) {\n tabClass.map(token => token.trim())\n .forEach(tClass => tip.classList.remove(tClass))\n }\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY)\n const _config = typeof config === 'object' ? config : null\n\n if (!data && /dispose|hide/.test(config)) {\n return\n }\n\n if (!data) {\n data = new Popover(this, _config)\n Data.setData(this, DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Popover to jQuery only if jQuery is present\n */\n\nonDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Popover.jQueryInterface\n $.fn[NAME].Constructor = Popover\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Popover.jQueryInterface\n }\n }\n})\n\nexport default Popover\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n getjQuery,\n onDOMContentLoaded,\n getSelectorFromElement,\n getUID,\n isElement,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'scrollspy'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst Default = {\n offset: 10,\n method: 'auto',\n target: ''\n}\n\nconst DefaultType = {\n offset: 'number',\n method: 'string',\n target: '(string|element)'\n}\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_SCROLL = `scroll${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_NAV_LINKS = '.nav-link'\nconst SELECTOR_NAV_ITEMS = '.nav-item'\nconst SELECTOR_LIST_ITEMS = '.list-group-item'\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\n\nconst METHOD_OFFSET = 'offset'\nconst METHOD_POSITION = 'position'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass ScrollSpy extends BaseComponent {\n constructor(element, config) {\n super(element)\n this._scrollElement = element.tagName === 'BODY' ? window : element\n this._config = this._getConfig(config)\n this._selector = `${this._config.target} ${SELECTOR_NAV_LINKS}, ${this._config.target} ${SELECTOR_LIST_ITEMS}, ${this._config.target} .${CLASS_NAME_DROPDOWN_ITEM}`\n this._offsets = []\n this._targets = []\n this._activeTarget = null\n this._scrollHeight = 0\n\n EventHandler.on(this._scrollElement, EVENT_SCROLL, event => this._process(event))\n\n this.refresh()\n this._process()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n refresh() {\n const autoMethod = this._scrollElement === this._scrollElement.window ?\n METHOD_OFFSET :\n METHOD_POSITION\n\n const offsetMethod = this._config.method === 'auto' ?\n autoMethod :\n this._config.method\n\n const offsetBase = offsetMethod === METHOD_POSITION ?\n this._getScrollTop() :\n 0\n\n this._offsets = []\n this._targets = []\n this._scrollHeight = this._getScrollHeight()\n\n const targets = SelectorEngine.find(this._selector)\n\n targets.map(element => {\n const targetSelector = getSelectorFromElement(element)\n const target = targetSelector ? SelectorEngine.findOne(targetSelector) : null\n\n if (target) {\n const targetBCR = target.getBoundingClientRect()\n if (targetBCR.width || targetBCR.height) {\n return [\n Manipulator[offsetMethod](target).top + offsetBase,\n targetSelector\n ]\n }\n }\n\n return null\n })\n .filter(item => item)\n .sort((a, b) => a[0] - b[0])\n .forEach(item => {\n this._offsets.push(item[0])\n this._targets.push(item[1])\n })\n }\n\n dispose() {\n super.dispose()\n EventHandler.off(this._scrollElement, EVENT_KEY)\n\n this._scrollElement = null\n this._config = null\n this._selector = null\n this._offsets = null\n this._targets = null\n this._activeTarget = null\n this._scrollHeight = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...(typeof config === 'object' && config ? config : {})\n }\n\n if (typeof config.target !== 'string' && isElement(config.target)) {\n let { id } = config.target\n if (!id) {\n id = getUID(NAME)\n config.target.id = id\n }\n\n config.target = `#${id}`\n }\n\n typeCheckConfig(NAME, config, DefaultType)\n\n return config\n }\n\n _getScrollTop() {\n return this._scrollElement === window ?\n this._scrollElement.pageYOffset :\n this._scrollElement.scrollTop\n }\n\n _getScrollHeight() {\n return this._scrollElement.scrollHeight || Math.max(\n document.body.scrollHeight,\n document.documentElement.scrollHeight\n )\n }\n\n _getOffsetHeight() {\n return this._scrollElement === window ?\n window.innerHeight :\n this._scrollElement.getBoundingClientRect().height\n }\n\n _process() {\n const scrollTop = this._getScrollTop() + this._config.offset\n const scrollHeight = this._getScrollHeight()\n const maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight()\n\n if (this._scrollHeight !== scrollHeight) {\n this.refresh()\n }\n\n if (scrollTop >= maxScroll) {\n const target = this._targets[this._targets.length - 1]\n\n if (this._activeTarget !== target) {\n this._activate(target)\n }\n\n return\n }\n\n if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n this._activeTarget = null\n this._clear()\n return\n }\n\n for (let i = this._offsets.length; i--;) {\n const isActiveTarget = this._activeTarget !== this._targets[i] &&\n scrollTop >= this._offsets[i] &&\n (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1])\n\n if (isActiveTarget) {\n this._activate(this._targets[i])\n }\n }\n }\n\n _activate(target) {\n this._activeTarget = target\n\n this._clear()\n\n const queries = this._selector.split(',')\n .map(selector => `${selector}[data-bs-target=\"${target}\"],${selector}[href=\"${target}\"]`)\n\n const link = SelectorEngine.findOne(queries.join(','))\n\n if (link.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE, link.closest(SELECTOR_DROPDOWN))\n .classList.add(CLASS_NAME_ACTIVE)\n\n link.classList.add(CLASS_NAME_ACTIVE)\n } else {\n // Set triggered link as active\n link.classList.add(CLASS_NAME_ACTIVE)\n\n SelectorEngine.parents(link, SELECTOR_NAV_LIST_GROUP)\n .forEach(listGroup => {\n // Set triggered links parents as active\n // With both and markup a parent is the previous sibling of any nav ancestor\n SelectorEngine.prev(listGroup, `${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`)\n .forEach(item => item.classList.add(CLASS_NAME_ACTIVE))\n\n // Handle special case when .nav-link is inside .nav-item\n SelectorEngine.prev(listGroup, SELECTOR_NAV_ITEMS)\n .forEach(navItem => {\n SelectorEngine.children(navItem, SELECTOR_NAV_LINKS)\n .forEach(item => item.classList.add(CLASS_NAME_ACTIVE))\n })\n })\n }\n\n EventHandler.trigger(this._scrollElement, EVENT_ACTIVATE, {\n relatedTarget: target\n })\n }\n\n _clear() {\n SelectorEngine.find(this._selector)\n .filter(node => node.classList.contains(CLASS_NAME_ACTIVE))\n .forEach(node => node.classList.remove(CLASS_NAME_ACTIVE))\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY)\n const _config = typeof config === 'object' && config\n\n if (!data) {\n data = new ScrollSpy(this, _config)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n SelectorEngine.find(SELECTOR_DATA_SPY)\n .forEach(spy => new ScrollSpy(spy, Manipulator.getDataAttributes(spy)))\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .ScrollSpy to jQuery only if jQuery is present\n */\n\nonDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = ScrollSpy.jQueryInterface\n $.fn[NAME].Constructor = ScrollSpy\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return ScrollSpy.jQueryInterface\n }\n }\n})\n\nexport default ScrollSpy\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n getjQuery,\n onDOMContentLoaded,\n TRANSITION_END,\n emulateTransitionEnd,\n getElementFromSelector,\n getTransitionDurationFromElement,\n reflow\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tab'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_DISABLED = 'disabled'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ACTIVE_UL = ':scope > li > .active'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\nconst SELECTOR_DROPDOWN_ACTIVE_CHILD = ':scope > .dropdown-menu .active'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tab extends BaseComponent {\n // Getters\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n show() {\n if ((this._element.parentNode &&\n this._element.parentNode.nodeType === Node.ELEMENT_NODE &&\n this._element.classList.contains(CLASS_NAME_ACTIVE)) ||\n this._element.classList.contains(CLASS_NAME_DISABLED)) {\n return\n }\n\n let previous\n const target = getElementFromSelector(this._element)\n const listElement = this._element.closest(SELECTOR_NAV_LIST_GROUP)\n\n if (listElement) {\n const itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE\n previous = SelectorEngine.find(itemSelector, listElement)\n previous = previous[previous.length - 1]\n }\n\n let hideEvent = null\n\n if (previous) {\n hideEvent = EventHandler.trigger(previous, EVENT_HIDE, {\n relatedTarget: this._element\n })\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n relatedTarget: previous\n })\n\n if (showEvent.defaultPrevented || (hideEvent !== null && hideEvent.defaultPrevented)) {\n return\n }\n\n this._activate(this._element, listElement)\n\n const complete = () => {\n EventHandler.trigger(previous, EVENT_HIDDEN, {\n relatedTarget: this._element\n })\n EventHandler.trigger(this._element, EVENT_SHOWN, {\n relatedTarget: previous\n })\n }\n\n if (target) {\n this._activate(target, target.parentNode, complete)\n } else {\n complete()\n }\n }\n\n // Private\n\n _activate(element, container, callback) {\n const activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ?\n SelectorEngine.find(SELECTOR_ACTIVE_UL, container) :\n SelectorEngine.children(container, SELECTOR_ACTIVE)\n\n const active = activeElements[0]\n const isTransitioning = callback && (active && active.classList.contains(CLASS_NAME_FADE))\n\n const complete = () => this._transitionComplete(element, active, callback)\n\n if (active && isTransitioning) {\n const transitionDuration = getTransitionDurationFromElement(active)\n active.classList.remove(CLASS_NAME_SHOW)\n\n EventHandler.one(active, TRANSITION_END, complete)\n emulateTransitionEnd(active, transitionDuration)\n } else {\n complete()\n }\n }\n\n _transitionComplete(element, active, callback) {\n if (active) {\n active.classList.remove(CLASS_NAME_ACTIVE)\n\n const dropdownChild = SelectorEngine.findOne(SELECTOR_DROPDOWN_ACTIVE_CHILD, active.parentNode)\n\n if (dropdownChild) {\n dropdownChild.classList.remove(CLASS_NAME_ACTIVE)\n }\n\n if (active.getAttribute('role') === 'tab') {\n active.setAttribute('aria-selected', false)\n }\n }\n\n element.classList.add(CLASS_NAME_ACTIVE)\n if (element.getAttribute('role') === 'tab') {\n element.setAttribute('aria-selected', true)\n }\n\n reflow(element)\n\n if (element.classList.contains(CLASS_NAME_FADE)) {\n element.classList.add(CLASS_NAME_SHOW)\n }\n\n if (element.parentNode && element.parentNode.classList.contains(CLASS_NAME_DROPDOWN_MENU)) {\n const dropdownElement = element.closest(SELECTOR_DROPDOWN)\n\n if (dropdownElement) {\n SelectorEngine.find(SELECTOR_DROPDOWN_TOGGLE)\n .forEach(dropdown => dropdown.classList.add(CLASS_NAME_ACTIVE))\n }\n\n element.setAttribute('aria-expanded', true)\n }\n\n if (callback) {\n callback()\n }\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Data.getData(this, DATA_KEY) || new Tab(this)\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n event.preventDefault()\n\n const data = Data.getData(this, DATA_KEY) || new Tab(this)\n data.show()\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Tab to jQuery only if jQuery is present\n */\n\nonDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Tab.jQueryInterface\n $.fn[NAME].Constructor = Tab\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Tab.jQueryInterface\n }\n }\n})\n\nexport default Tab\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n getjQuery,\n onDOMContentLoaded,\n TRANSITION_END,\n emulateTransitionEnd,\n getTransitionDurationFromElement,\n reflow,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'toast'\nconst DATA_KEY = 'bs.toast'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_HIDE = 'hide'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\n\nconst DefaultType = {\n animation: 'boolean',\n autohide: 'boolean',\n delay: 'number'\n}\n\nconst Default = {\n animation: true,\n autohide: true,\n delay: 5000\n}\n\nconst SELECTOR_DATA_DISMISS = '[data-bs-dismiss=\"toast\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Toast extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._config = this._getConfig(config)\n this._timeout = null\n this._setListeners()\n }\n\n // Getters\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get Default() {\n return Default\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n show() {\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n this._clearTimeout()\n\n if (this._config.animation) {\n this._element.classList.add(CLASS_NAME_FADE)\n }\n\n const complete = () => {\n this._element.classList.remove(CLASS_NAME_SHOWING)\n this._element.classList.add(CLASS_NAME_SHOW)\n\n EventHandler.trigger(this._element, EVENT_SHOWN)\n\n if (this._config.autohide) {\n this._timeout = setTimeout(() => {\n this.hide()\n }, this._config.delay)\n }\n }\n\n this._element.classList.remove(CLASS_NAME_HIDE)\n reflow(this._element)\n this._element.classList.add(CLASS_NAME_SHOWING)\n if (this._config.animation) {\n const transitionDuration = getTransitionDurationFromElement(this._element)\n\n EventHandler.one(this._element, TRANSITION_END, complete)\n emulateTransitionEnd(this._element, transitionDuration)\n } else {\n complete()\n }\n }\n\n hide() {\n if (!this._element.classList.contains(CLASS_NAME_SHOW)) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n const complete = () => {\n this._element.classList.add(CLASS_NAME_HIDE)\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n this._element.classList.remove(CLASS_NAME_SHOW)\n if (this._config.animation) {\n const transitionDuration = getTransitionDurationFromElement(this._element)\n\n EventHandler.one(this._element, TRANSITION_END, complete)\n emulateTransitionEnd(this._element, transitionDuration)\n } else {\n complete()\n }\n }\n\n dispose() {\n this._clearTimeout()\n\n if (this._element.classList.contains(CLASS_NAME_SHOW)) {\n this._element.classList.remove(CLASS_NAME_SHOW)\n }\n\n EventHandler.off(this._element, EVENT_CLICK_DISMISS)\n\n super.dispose()\n this._config = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...(typeof config === 'object' && config ? config : {})\n }\n\n typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n return config\n }\n\n _setListeners() {\n EventHandler.on(this._element, EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, () => this.hide())\n }\n\n _clearTimeout() {\n clearTimeout(this._timeout)\n this._timeout = null\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY)\n const _config = typeof config === 'object' && config\n\n if (!data) {\n data = new Toast(this, _config)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](this)\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Toast to jQuery only if jQuery is present\n */\n\nonDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Toast.jQueryInterface\n $.fn[NAME].Constructor = Toast\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Toast.jQueryInterface\n }\n }\n})\n\nexport default Toast\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): index.umd.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Alert from './src/alert'\nimport Button from './src/button'\nimport Carousel from './src/carousel'\nimport Collapse from './src/collapse'\nimport Dropdown from './src/dropdown'\nimport Modal from './src/modal'\nimport Popover from './src/popover'\nimport ScrollSpy from './src/scrollspy'\nimport Tab from './src/tab'\nimport Toast from './src/toast'\nimport Tooltip from './src/tooltip'\n\nexport default {\n Alert,\n Button,\n Carousel,\n Collapse,\n Dropdown,\n Modal,\n Popover,\n ScrollSpy,\n Tab,\n Toast,\n Tooltip\n}\n"],"names":["MAX_UID","MILLISECONDS_MULTIPLIER","TRANSITION_END","toType","obj","undefined","toString","call","match","toLowerCase","getUID","prefix","Math","floor","random","document","getElementById","getSelector","element","selector","getAttribute","hrefAttr","trim","getSelectorFromElement","querySelector","getElementFromSelector","getTransitionDurationFromElement","window","getComputedStyle","transitionDuration","transitionDelay","floatTransitionDuration","Number","parseFloat","floatTransitionDelay","split","triggerTransitionEnd","dispatchEvent","Event","isElement","nodeType","emulateTransitionEnd","duration","called","durationPadding","emulatedDuration","listener","removeEventListener","addEventListener","setTimeout","typeCheckConfig","componentName","config","configTypes","Object","keys","forEach","property","expectedTypes","value","valueType","RegExp","test","Error","toUpperCase","isVisible","style","parentNode","elementStyle","parentNodeStyle","display","visibility","findShadowRoot","documentElement","attachShadow","getRootNode","root","ShadowRoot","noop","reflow","offsetHeight","getjQuery","jQuery","body","hasAttribute","onDOMContentLoaded","callback","readyState","isRTL","dir","mapData","storeData","id","set","key","data","bsKey","get","keyProperties","delete","Data","setData","instance","getData","removeData","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","nativeEvents","Set","getUidEvent","uid","getEvent","bootstrapHandler","fn","handler","event","delegateTarget","oneOff","EventHandler","off","type","apply","bootstrapDelegationHandler","domElements","querySelectorAll","target","i","length","findHandler","events","delegationSelector","uidEventList","len","originalHandler","normalizeParams","originalTypeEvent","delegationFn","delegation","typeEvent","replace","custom","isNative","has","addHandler","handlers","previousFn","removeHandler","Boolean","removeNamespacedHandlers","namespace","storeElementEvent","handlerKey","includes","on","one","inNamespace","isNamespace","startsWith","elementEvent","slice","keyHandlers","trigger","args","$","jQueryEvent","bubbles","nativeDispatch","defaultPrevented","evt","isPropagationStopped","isImmediatePropagationStopped","isDefaultPrevented","createEvent","initEvent","CustomEvent","cancelable","defineProperty","preventDefault","VERSION","BaseComponent","_element","constructor","DATA_KEY","dispose","getInstance","NAME","EVENT_KEY","DATA_API_KEY","SELECTOR_DISMISS","EVENT_CLOSE","EVENT_CLOSED","EVENT_CLICK_DATA_API","CLASSNAME_ALERT","CLASSNAME_FADE","CLASSNAME_SHOW","Alert","close","rootElement","_getRootElement","customEvent","_triggerCloseEvent","_removeElement","closest","classList","remove","contains","_destroyElement","removeChild","jQueryInterface","each","handleDismiss","alertInstance","JQUERY_NO_CONFLICT","Constructor","noConflict","CLASS_NAME_ACTIVE","SELECTOR_DATA_TOGGLE","Button","toggle","setAttribute","button","normalizeData","val","normalizeDataKey","chr","Manipulator","setDataAttribute","removeDataAttribute","removeAttribute","getDataAttributes","attributes","dataset","filter","pureKey","charAt","getDataAttribute","offset","rect","getBoundingClientRect","top","scrollTop","left","scrollLeft","position","offsetTop","offsetLeft","NODE_TEXT","SelectorEngine","matches","find","concat","Element","prototype","findOne","children","child","parents","ancestor","Node","ELEMENT_NODE","push","prev","previous","previousElementSibling","next","nextElementSibling","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","TOUCHEVENT_COMPAT_WAIT","SWIPE_THRESHOLD","Default","interval","keyboard","slide","pause","wrap","touch","DefaultType","DIRECTION_NEXT","DIRECTION_PREV","DIRECTION_LEFT","DIRECTION_RIGHT","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERDOWN","EVENT_POINTERUP","EVENT_DRAG_START","EVENT_LOAD_DATA_API","CLASS_NAME_CAROUSEL","CLASS_NAME_SLIDE","CLASS_NAME_END","CLASS_NAME_START","CLASS_NAME_NEXT","CLASS_NAME_PREV","CLASS_NAME_POINTER_EVENT","SELECTOR_ACTIVE","SELECTOR_ACTIVE_ITEM","SELECTOR_ITEM","SELECTOR_ITEM_IMG","SELECTOR_NEXT_PREV","SELECTOR_INDICATORS","SELECTOR_DATA_SLIDE","SELECTOR_DATA_RIDE","PointerType","TOUCH","PEN","Carousel","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","touchStartX","touchDeltaX","_config","_getConfig","_indicatorsElement","_touchSupported","navigator","maxTouchPoints","_pointerEvent","PointerEvent","_addEventListeners","_slide","nextWhenVisible","hidden","cycle","clearInterval","_updateInterval","setInterval","visibilityState","bind","to","index","activeIndex","_getItemIndex","direction","_handleSwipe","absDeltax","abs","_keydown","_addTouchEventListeners","start","pointerType","clientX","touches","move","end","clearTimeout","itemImg","e","add","tagName","indexOf","_getItemByDirection","activeElement","isNextDirection","isPrevDirection","lastItemIndex","isGoingToWrap","delta","itemIndex","_triggerSlideEvent","relatedTarget","eventDirectionName","targetIndex","fromIndex","from","_setActiveIndicatorElement","indicators","nextIndicator","elementInterval","parseInt","defaultInterval","activeElementIndex","nextElement","nextElementIndex","isCycling","directionalClassName","orderClassName","slideEvent","carouselInterface","action","TypeError","ride","dataApiClickHandler","slideIndex","carousels","parent","EVENT_SHOW","EVENT_SHOWN","EVENT_HIDE","EVENT_HIDDEN","CLASS_NAME_SHOW","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_COLLAPSED","WIDTH","HEIGHT","SELECTOR_ACTIVES","Collapse","_isTransitioning","_triggerArray","toggleList","elem","filterElement","foundElem","_selector","_parent","_getParent","_addAriaAndCollapsedClass","hide","show","actives","activesData","container","tempActiveData","startEvent","elemActive","collapseInterface","dimension","_getDimension","setTransitioning","complete","capitalizedDimension","scrollSize","triggerArrayLength","isTransitioning","jquery","selected","triggerArray","isOpen","triggerData","selectorElements","ESCAPE_KEY","SPACE_KEY","TAB_KEY","ARROW_UP_KEY","ARROW_DOWN_KEY","RIGHT_MOUSE_BUTTON","REGEXP_KEYDOWN","EVENT_CLICK","EVENT_KEYDOWN_DATA_API","EVENT_KEYUP_DATA_API","CLASS_NAME_DISABLED","CLASS_NAME_DROPUP","CLASS_NAME_DROPEND","CLASS_NAME_DROPSTART","CLASS_NAME_NAVBAR","SELECTOR_FORM_CHILD","SELECTOR_MENU","SELECTOR_NAVBAR_NAV","SELECTOR_VISIBLE_ITEMS","PLACEMENT_TOP","PLACEMENT_TOPEND","PLACEMENT_BOTTOM","PLACEMENT_BOTTOMEND","PLACEMENT_RIGHT","PLACEMENT_LEFT","flip","boundary","reference","popperConfig","Dropdown","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","disabled","isActive","clearMenus","getParentFromElement","showEvent","Popper","referenceElement","_getPopperConfig","focus","hideEvent","destroy","update","stopPropagation","_getPlacement","parentDropdown","isEnd","getPropertyValue","placement","modifiers","name","options","altBoundary","rootBoundary","enabled","dropdownInterface","toggles","context","clickEvent","dropdownMenu","dataApiKeydownHandler","items","backdrop","EVENT_HIDE_PREVENTED","EVENT_FOCUSIN","EVENT_RESIZE","EVENT_CLICK_DISMISS","EVENT_KEYDOWN_DISMISS","EVENT_MOUSEUP_DISMISS","EVENT_MOUSEDOWN_DISMISS","CLASS_NAME_SCROLLBAR_MEASURER","CLASS_NAME_BACKDROP","CLASS_NAME_OPEN","CLASS_NAME_FADE","CLASS_NAME_STATIC","SELECTOR_DIALOG","SELECTOR_MODAL_BODY","SELECTOR_DATA_DISMISS","SELECTOR_FIXED_CONTENT","SELECTOR_STICKY_CONTENT","Modal","_dialog","_backdrop","_isShown","_isBodyOverflowing","_ignoreBackdropClick","_scrollbarWidth","_checkScrollbar","_setScrollbar","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","transition","_hideModal","htmlElement","handleUpdate","modalBody","appendChild","_enforceFocus","transitionComplete","_triggerBackdropTransition","_resetAdjustments","_resetScrollbar","_removeBackdrop","animate","createElement","className","currentTarget","backdropTransitionDuration","callbackRemove","isModalOverflowing","scrollHeight","clientHeight","overflowY","modalTransitionDuration","paddingLeft","paddingRight","round","right","innerWidth","_getScrollbarWidth","actualPadding","calculatedPadding","actualMargin","marginRight","calculatedMargin","padding","margin","scrollDiv","scrollbarWidth","width","clientWidth","uriAttrs","ARIA_ATTRIBUTE_PATTERN","SAFE_URL_PATTERN","DATA_URL_PATTERN","allowedAttribute","attr","allowedAttributeList","attrName","nodeName","nodeValue","regExp","attrRegex","DefaultAllowlist","a","area","b","br","col","code","div","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","p","pre","s","small","span","sub","sup","strong","u","ul","sanitizeHtml","unsafeHtml","allowList","sanitizeFn","domParser","DOMParser","createdDocument","parseFromString","allowlistKeys","elements","el","elName","attributeList","allowedAttributes","innerHTML","CLASS_PREFIX","BSCLS_PREFIX_REGEX","DISALLOWED_ATTRIBUTES","animation","template","title","delay","html","fallbackPlacements","customClass","sanitize","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","HIDE","HIDDEN","SHOW","SHOWN","INSERTED","CLICK","FOCUSIN","FOCUSOUT","MOUSEENTER","MOUSELEAVE","CLASS_NAME_MODAL","HOVER_STATE_SHOW","HOVER_STATE_OUT","SELECTOR_TOOLTIP_INNER","TRIGGER_HOVER","TRIGGER_FOCUS","TRIGGER_CLICK","TRIGGER_MANUAL","Tooltip","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","enable","disable","toggleEnabled","dataKey","_getDelegateConfig","click","_isWithActiveTrigger","_enter","_leave","getTipElement","_hideModalHandler","isWithContent","shadowRoot","isInTheDom","ownerDocument","tipId","setContent","attachment","_getAttachment","_addAttachmentClass","_getContainer","prevHoverState","_cleanTipClass","getTitle","setElementContent","content","textContent","updateAttachment","flipModifier","defaultBsConfig","phase","_handlePopperPlacementChange","onFirstUpdate","triggers","eventIn","eventOut","_fixTitle","originalTitleType","dataAttributes","dataAttr","tabClass","map","token","tClass","popperData","state","popper","SELECTOR_TITLE","SELECTOR_CONTENT","Popover","_getContent","method","EVENT_ACTIVATE","EVENT_SCROLL","CLASS_NAME_DROPDOWN_ITEM","SELECTOR_DATA_SPY","SELECTOR_NAV_LIST_GROUP","SELECTOR_NAV_LINKS","SELECTOR_NAV_ITEMS","SELECTOR_LIST_ITEMS","SELECTOR_DROPDOWN","SELECTOR_DROPDOWN_TOGGLE","METHOD_OFFSET","METHOD_POSITION","ScrollSpy","_scrollElement","_offsets","_targets","_activeTarget","_scrollHeight","_process","refresh","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","targets","targetSelector","targetBCR","height","item","sort","pageYOffset","max","_getOffsetHeight","innerHeight","maxScroll","_activate","_clear","isActiveTarget","queries","link","join","listGroup","navItem","node","spy","CLASS_NAME_DROPDOWN_MENU","SELECTOR_ACTIVE_UL","SELECTOR_DROPDOWN_ACTIVE_CHILD","Tab","listElement","itemSelector","activeElements","active","_transitionComplete","dropdownChild","dropdownElement","dropdown","CLASS_NAME_HIDE","CLASS_NAME_SHOWING","autohide","Toast","_clearTimeout"],"mappings":"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"} \ No newline at end of file diff --git a/dist/js/bootstrap.min.js b/dist/js/bootstrap.min.js index d7181fc38..26dc2f480 100644 --- a/dist/js/bootstrap.min.js +++ b/dist/js/bootstrap.min.js @@ -1,7 +1,7 @@ /*! - * Bootstrap v5.0.0-beta1 (https://getbootstrap.com/) - * Copyright 2011-2020 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("@popperjs/core")):"function"==typeof define&&define.amd?define(["@popperjs/core"],e):(t="undefined"!=typeof globalThis?globalThis:t||self).bootstrap=e(t.Popper)}(this,(function(t){"use strict";function e(t){if(t&&t.__esModule)return t;var e=Object.create(null);return t&&Object.keys(t).forEach((function(n){if("default"!==n){var i=Object.getOwnPropertyDescriptor(t,n);Object.defineProperty(e,n,i.get?i:{enumerable:!0,get:function(){return t[n]}})}})),e.default=t,Object.freeze(e)}var n=e(t);function i(t,e){for(var n=0;n0,i._pointerEvent=Boolean(window.PointerEvent),i._addEventListeners(),i}r(e,t);var n=e.prototype;return n.next=function(){this._isSliding||this._slide("next")},n.nextWhenVisible=function(){!document.hidden&&v(this._element)&&this.next()},n.prev=function(){this._isSliding||this._slide("prev")},n.pause=function(t){t||(this._isPaused=!0),V.findOne(".carousel-item-next, .carousel-item-prev",this._element)&&(p(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null},n.cycle=function(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config&&this._config.interval&&!this._isPaused&&(this._updateInterval(),this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))},n.to=function(t){var e=this;this._activeElement=V.findOne(".active.carousel-item",this._element);var n=this._getItemIndex(this._activeElement);if(!(t>this._items.length-1||t<0))if(this._isSliding)Q.one(this._element,"slid.bs.carousel",(function(){return e.to(t)}));else{if(n===t)return this.pause(),void this.cycle();var i=t>n?"next":"prev";this._slide(i,this._items[t])}},n.dispose=function(){t.prototype.dispose.call(this),Q.off(this._element,G),this._items=null,this._config=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null},n._getConfig=function(t){return t=s({},Z,t),_($,t,J),t},n._handleSwipe=function(){var t=Math.abs(this.touchDeltaX);if(!(t<=40)){var e=t/this.touchDeltaX;this.touchDeltaX=0,e>0&&this.prev(),e<0&&this.next()}},n._addEventListeners=function(){var t=this;this._config.keyboard&&Q.on(this._element,"keydown.bs.carousel",(function(e){return t._keydown(e)})),"hover"===this._config.pause&&(Q.on(this._element,"mouseenter.bs.carousel",(function(e){return t.pause(e)})),Q.on(this._element,"mouseleave.bs.carousel",(function(e){return t.cycle(e)}))),this._config.touch&&this._touchSupported&&this._addTouchEventListeners()},n._addTouchEventListeners=function(){var t=this,e=function(e){t._pointerEvent&&tt[e.pointerType.toUpperCase()]?t.touchStartX=e.clientX:t._pointerEvent||(t.touchStartX=e.touches[0].clientX)},n=function(e){t._pointerEvent&&tt[e.pointerType.toUpperCase()]&&(t.touchDeltaX=e.clientX-t.touchStartX),t._handleSwipe(),"hover"===t._config.pause&&(t.pause(),t.touchTimeout&&clearTimeout(t.touchTimeout),t.touchTimeout=setTimeout((function(e){return t.cycle(e)}),500+t._config.interval))};V.find(".carousel-item img",this._element).forEach((function(t){Q.on(t,"dragstart.bs.carousel",(function(t){return t.preventDefault()}))})),this._pointerEvent?(Q.on(this._element,"pointerdown.bs.carousel",(function(t){return e(t)})),Q.on(this._element,"pointerup.bs.carousel",(function(t){return n(t)})),this._element.classList.add("pointer-event")):(Q.on(this._element,"touchstart.bs.carousel",(function(t){return e(t)})),Q.on(this._element,"touchmove.bs.carousel",(function(e){return function(e){e.touches&&e.touches.length>1?t.touchDeltaX=0:t.touchDeltaX=e.touches[0].clientX-t.touchStartX}(e)})),Q.on(this._element,"touchend.bs.carousel",(function(t){return n(t)})))},n._keydown=function(t){if(!/input|textarea/i.test(t.target.tagName))switch(t.key){case"ArrowLeft":t.preventDefault(),this.prev();break;case"ArrowRight":t.preventDefault(),this.next()}},n._getItemIndex=function(t){return this._items=t&&t.parentNode?V.find(".carousel-item",t.parentNode):[],this._items.indexOf(t)},n._getItemByDirection=function(t,e){var n="next"===t,i="prev"===t,o=this._getItemIndex(e),s=this._items.length-1;if((i&&0===o||n&&o===s)&&!this._config.wrap)return e;var r=(o+("prev"===t?-1:1))%this._items.length;return-1===r?this._items[this._items.length-1]:this._items[r]},n._triggerSlideEvent=function(t,e){var n=this._getItemIndex(t),i=this._getItemIndex(V.findOne(".active.carousel-item",this._element));return Q.trigger(this._element,"slide.bs.carousel",{relatedTarget:t,direction:e,from:i,to:n})},n._setActiveIndicatorElement=function(t){if(this._indicatorsElement){for(var e=V.find(".active",this._indicatorsElement),n=0;n0)for(var i=0;i0&&s--,"ArrowDown"===t.key&&sdocument.documentElement.clientHeight;e||(this._element.style.overflowY="hidden"),this._element.classList.add("modal-static");var n=h(this._dialog);Q.off(this._element,"transitionend"),Q.one(this._element,"transitionend",(function(){t._element.classList.remove("modal-static"),e||(Q.one(t._element,"transitionend",(function(){t._element.style.overflowY=""})),m(t._element,n))})),m(this._element,n),this._element.focus()}},n._adjustDialog=function(){var t=this._element.scrollHeight>document.documentElement.clientHeight;(!this._isBodyOverflowing&&t&&!T||this._isBodyOverflowing&&!t&&T)&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),(this._isBodyOverflowing&&!t&&!T||!this._isBodyOverflowing&&t&&T)&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},n._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},n._checkScrollbar=function(){var t=document.body.getBoundingClientRect();this._isBodyOverflowing=Math.round(t.left+t.right)',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",container:!1,fallbackPlacements:null,boundary:"clippingParents",customClass:"",sanitize:!0,sanitizeFn:null,allowList:Tt,popperConfig:null},Ot={HIDE:"hide.bs.tooltip",HIDDEN:"hidden.bs.tooltip",SHOW:"show.bs.tooltip",SHOWN:"shown.bs.tooltip",INSERTED:"inserted.bs.tooltip",CLICK:"click.bs.tooltip",FOCUSIN:"focusin.bs.tooltip",FOCUSOUT:"focusout.bs.tooltip",MOUSEENTER:"mouseenter.bs.tooltip",MOUSELEAVE:"mouseleave.bs.tooltip"},It=function(e){function i(t,i){var o;if(void 0===n)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");return(o=e.call(this,t)||this)._isEnabled=!0,o._timeout=0,o._hoverState="",o._activeTrigger={},o._popper=null,o.config=o._getConfig(i),o.tip=null,o._setListeners(),o}r(i,e);var a=i.prototype;return a.enable=function(){this._isEnabled=!0},a.disable=function(){this._isEnabled=!1},a.toggleEnabled=function(){this._isEnabled=!this._isEnabled},a.toggle=function(t){if(this._isEnabled)if(t){var e=this.constructor.DATA_KEY,n=L(t.delegateTarget,e);n||(n=new this.constructor(t.delegateTarget,this._getDelegateConfig()),A(t.delegateTarget,e,n)),n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)}else{if(this.getTipElement().classList.contains("show"))return void this._leave(null,this);this._enter(null,this)}},a.dispose=function(){clearTimeout(this._timeout),Q.off(this._element,this.constructor.EVENT_KEY),Q.off(this._element.closest(".modal"),"hide.bs.modal",this._hideModalHandler),this.tip&&this.tip.parentNode.removeChild(this.tip),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,this._popper&&this._popper.destroy(),this._popper=null,this.config=null,this.tip=null,e.prototype.dispose.call(this)},a.show=function(){var e=this;if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(this.isWithContent()&&this._isEnabled){var n=Q.trigger(this._element,this.constructor.Event.SHOW),i=function t(e){if(!document.documentElement.attachShadow)return null;if("function"==typeof e.getRootNode){var n=e.getRootNode();return n instanceof ShadowRoot?n:null}return e instanceof ShadowRoot?e:e.parentNode?t(e.parentNode):null}(this._element),o=null===i?this._element.ownerDocument.documentElement.contains(this._element):i.contains(this._element);if(n.defaultPrevented||!o)return;var s=this.getTipElement(),r=c(this.constructor.NAME);s.setAttribute("id",r),this._element.setAttribute("aria-describedby",r),this.setContent(),this.config.animation&&s.classList.add("fade");var a="function"==typeof this.config.placement?this.config.placement.call(this,s,this._element):this.config.placement,l=this._getAttachment(a);this._addAttachmentClass(l);var u=this._getContainer();A(s,this.constructor.DATA_KEY,this),this._element.ownerDocument.documentElement.contains(this.tip)||u.appendChild(s),Q.trigger(this._element,this.constructor.Event.INSERTED),this._popper=t.createPopper(this._element,s,this._getPopperConfig(l)),s.classList.add("show");var d,f,p="function"==typeof this.config.customClass?this.config.customClass():this.config.customClass;if(p)(d=s.classList).add.apply(d,p.split(" "));if("ontouchstart"in document.documentElement)(f=[]).concat.apply(f,document.body.children).forEach((function(t){Q.on(t,"mouseover",(function(){}))}));var g=function(){var t=e._hoverState;e._hoverState=null,Q.trigger(e._element,e.constructor.Event.SHOWN),"out"===t&&e._leave(null,e)};if(this.tip.classList.contains("fade")){var _=h(this.tip);Q.one(this.tip,"transitionend",g),m(this.tip,_)}else g()}},a.hide=function(){var t=this;if(this._popper){var e=this.getTipElement(),n=function(){"show"!==t._hoverState&&e.parentNode&&e.parentNode.removeChild(e),t._cleanTipClass(),t._element.removeAttribute("aria-describedby"),Q.trigger(t._element,t.constructor.Event.HIDDEN),t._popper&&(t._popper.destroy(),t._popper=null)};if(!Q.trigger(this._element,this.constructor.Event.HIDE).defaultPrevented){var i;if(e.classList.remove("show"),"ontouchstart"in document.documentElement)(i=[]).concat.apply(i,document.body.children).forEach((function(t){return Q.off(t,"mouseover",b)}));if(this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1,this.tip.classList.contains("fade")){var o=h(e);Q.one(e,"transitionend",n),m(e,o)}else n();this._hoverState=""}}},a.update=function(){null!==this._popper&&this._popper.update()},a.isWithContent=function(){return Boolean(this.getTitle())},a.getTipElement=function(){if(this.tip)return this.tip;var t=document.createElement("div");return t.innerHTML=this.config.template,this.tip=t.children[0],this.tip},a.setContent=function(){var t=this.getTipElement();this.setElementContent(V.findOne(".tooltip-inner",t),this.getTitle()),t.classList.remove("fade","show")},a.setElementContent=function(t,e){if(null!==t)return"object"==typeof e&&g(e)?(e.jquery&&(e=e[0]),void(this.config.html?e.parentNode!==t&&(t.innerHTML="",t.appendChild(e)):t.textContent=e.textContent)):void(this.config.html?(this.config.sanitize&&(e=kt(e,this.config.allowList,this.config.sanitizeFn)),t.innerHTML=e):t.textContent=e)},a.getTitle=function(){var t=this._element.getAttribute("data-bs-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this._element):this.config.title),t},a.updateAttachment=function(t){return"right"===t?"end":"left"===t?"start":t},a._getPopperConfig=function(t){var e=this,n={name:"flip",options:{altBoundary:!0}};return this.config.fallbackPlacements&&(n.options.fallbackPlacements=this.config.fallbackPlacements),s({},{placement:t,modifiers:[n,{name:"preventOverflow",options:{rootBoundary:this.config.boundary}},{name:"arrow",options:{element:"."+this.constructor.NAME+"-arrow"}},{name:"onChange",enabled:!0,phase:"afterWrite",fn:function(t){return e._handlePopperPlacementChange(t)}}],onFirstUpdate:function(t){t.options.placement!==t.placement&&e._handlePopperPlacementChange(t)}},this.config.popperConfig)},a._addAttachmentClass=function(t){this.getTipElement().classList.add("bs-tooltip-"+this.updateAttachment(t))},a._getContainer=function(){return!1===this.config.container?document.body:g(this.config.container)?this.config.container:V.findOne(this.config.container)},a._getAttachment=function(t){return St[t.toUpperCase()]},a._setListeners=function(){var t=this;this.config.trigger.split(" ").forEach((function(e){if("click"===e)Q.on(t._element,t.constructor.Event.CLICK,t.config.selector,(function(e){return t.toggle(e)}));else if("manual"!==e){var n="hover"===e?t.constructor.Event.MOUSEENTER:t.constructor.Event.FOCUSIN,i="hover"===e?t.constructor.Event.MOUSELEAVE:t.constructor.Event.FOCUSOUT;Q.on(t._element,n,t.config.selector,(function(e){return t._enter(e)})),Q.on(t._element,i,t.config.selector,(function(e){return t._leave(e)}))}})),this._hideModalHandler=function(){t._element&&t.hide()},Q.on(this._element.closest(".modal"),"hide.bs.modal",this._hideModalHandler),this.config.selector?this.config=s({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},a._fixTitle=function(){var t=this._element.getAttribute("title"),e=typeof this._element.getAttribute("data-bs-original-title");(t||"string"!==e)&&(this._element.setAttribute("data-bs-original-title",t||""),!t||this._element.getAttribute("aria-label")||this._element.textContent||this._element.setAttribute("aria-label",t),this._element.setAttribute("title",""))},a._enter=function(t,e){var n=this.constructor.DATA_KEY;(e=e||L(t.delegateTarget,n))||(e=new this.constructor(t.delegateTarget,this._getDelegateConfig()),A(t.delegateTarget,n,e)),t&&(e._activeTrigger["focusin"===t.type?"focus":"hover"]=!0),e.getTipElement().classList.contains("show")||"show"===e._hoverState?e._hoverState="show":(clearTimeout(e._timeout),e._hoverState="show",e.config.delay&&e.config.delay.show?e._timeout=setTimeout((function(){"show"===e._hoverState&&e.show()}),e.config.delay.show):e.show())},a._leave=function(t,e){var n=this.constructor.DATA_KEY;(e=e||L(t.delegateTarget,n))||(e=new this.constructor(t.delegateTarget,this._getDelegateConfig()),A(t.delegateTarget,n,e)),t&&(e._activeTrigger["focusout"===t.type?"focus":"hover"]=!1),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState="out",e.config.delay&&e.config.delay.hide?e._timeout=setTimeout((function(){"out"===e._hoverState&&e.hide()}),e.config.delay.hide):e.hide())},a._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},a._getConfig=function(t){var e=q.getDataAttributes(this._element);return Object.keys(e).forEach((function(t){Ct.has(t)&&delete e[t]})),t&&"object"==typeof t.container&&t.container.jquery&&(t.container=t.container[0]),"number"==typeof(t=s({},this.constructor.Default,e,"object"==typeof t&&t?t:{})).delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),_(At,t,this.constructor.DefaultType),t.sanitize&&(t.template=kt(t.template,t.allowList,t.sanitizeFn)),t},a._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},a._cleanTipClass=function(){var t=this.getTipElement(),e=t.getAttribute("class").match(Lt);null!==e&&e.length>0&&e.map((function(t){return t.trim()})).forEach((function(e){return t.classList.remove(e)}))},a._handlePopperPlacementChange=function(t){var e=t.state;e&&(this.tip=e.elements.popper,this._cleanTipClass(),this._addAttachmentClass(this._getAttachment(e.placement)))},i.jQueryInterface=function(t){return this.each((function(){var e=L(this,"bs.tooltip"),n="object"==typeof t&&t;if((e||!/dispose|hide/.test(t))&&(e||(e=new i(this,n)),"string"==typeof t)){if(void 0===e[t])throw new TypeError('No method named "'+t+'"');e[t]()}}))},o(i,null,[{key:"Default",get:function(){return Nt}},{key:"NAME",get:function(){return At}},{key:"DATA_KEY",get:function(){return"bs.tooltip"}},{key:"Event",get:function(){return Ot}},{key:"EVENT_KEY",get:function(){return".bs.tooltip"}},{key:"DefaultType",get:function(){return Dt}}]),i}(U);E((function(){var t=w();if(t){var e=t.fn[At];t.fn[At]=It.jQueryInterface,t.fn[At].Constructor=It,t.fn[At].noConflict=function(){return t.fn[At]=e,It.jQueryInterface}}}));var jt="popover",Pt=new RegExp("(^|\\s)bs-popover\\S+","g"),xt=s({},It.Default,{placement:"right",trigger:"click",content:"",template:''}),Ht=s({},It.DefaultType,{content:"(string|element|function)"}),Bt={HIDE:"hide.bs.popover",HIDDEN:"hidden.bs.popover",SHOW:"show.bs.popover",SHOWN:"shown.bs.popover",INSERTED:"inserted.bs.popover",CLICK:"click.bs.popover",FOCUSIN:"focusin.bs.popover",FOCUSOUT:"focusout.bs.popover",MOUSEENTER:"mouseenter.bs.popover",MOUSELEAVE:"mouseleave.bs.popover"},Mt=function(t){function e(){return t.apply(this,arguments)||this}r(e,t);var n=e.prototype;return n.isWithContent=function(){return this.getTitle()||this._getContent()},n.setContent=function(){var t=this.getTipElement();this.setElementContent(V.findOne(".popover-header",t),this.getTitle());var e=this._getContent();"function"==typeof e&&(e=e.call(this._element)),this.setElementContent(V.findOne(".popover-body",t),e),t.classList.remove("fade","show")},n._addAttachmentClass=function(t){this.getTipElement().classList.add("bs-popover-"+this.updateAttachment(t))},n._getContent=function(){return this._element.getAttribute("data-bs-content")||this.config.content},n._cleanTipClass=function(){var t=this.getTipElement(),e=t.getAttribute("class").match(Pt);null!==e&&e.length>0&&e.map((function(t){return t.trim()})).forEach((function(e){return t.classList.remove(e)}))},e.jQueryInterface=function(t){return this.each((function(){var n=L(this,"bs.popover"),i="object"==typeof t?t:null;if((n||!/dispose|hide/.test(t))&&(n||(n=new e(this,i),A(this,"bs.popover",n)),"string"==typeof t)){if(void 0===n[t])throw new TypeError('No method named "'+t+'"');n[t]()}}))},o(e,null,[{key:"Default",get:function(){return xt}},{key:"NAME",get:function(){return jt}},{key:"DATA_KEY",get:function(){return"bs.popover"}},{key:"Event",get:function(){return Bt}},{key:"EVENT_KEY",get:function(){return".bs.popover"}},{key:"DefaultType",get:function(){return Ht}}]),e}(It);E((function(){var t=w();if(t){var e=t.fn[jt];t.fn[jt]=Mt.jQueryInterface,t.fn[jt].Constructor=Mt,t.fn[jt].noConflict=function(){return t.fn[jt]=e,Mt.jQueryInterface}}}));var Rt="scrollspy",Kt={offset:10,method:"auto",target:""},Qt={offset:"number",method:"string",target:"(string|element)"},Ut=function(t){function e(e,n){var i;return(i=t.call(this,e)||this)._scrollElement="BODY"===e.tagName?window:e,i._config=i._getConfig(n),i._selector=i._config.target+" .nav-link, "+i._config.target+" .list-group-item, "+i._config.target+" .dropdown-item",i._offsets=[],i._targets=[],i._activeTarget=null,i._scrollHeight=0,Q.on(i._scrollElement,"scroll.bs.scrollspy",(function(t){return i._process(t)})),i.refresh(),i._process(),i}r(e,t);var n=e.prototype;return n.refresh=function(){var t=this,e=this._scrollElement===this._scrollElement.window?"offset":"position",n="auto"===this._config.method?e:this._config.method,i="position"===n?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),V.find(this._selector).map((function(t){var e=d(t),o=e?V.findOne(e):null;if(o){var s=o.getBoundingClientRect();if(s.width||s.height)return[q[n](o).top+i,e]}return null})).filter((function(t){return t})).sort((function(t,e){return t[0]-e[0]})).forEach((function(e){t._offsets.push(e[0]),t._targets.push(e[1])}))},n.dispose=function(){t.prototype.dispose.call(this),Q.off(this._scrollElement,".bs.scrollspy"),this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},n._getConfig=function(t){if("string"!=typeof(t=s({},Kt,"object"==typeof t&&t?t:{})).target&&g(t.target)){var e=t.target.id;e||(e=c(Rt),t.target.id=e),t.target="#"+e}return _(Rt,t,Qt),t},n._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},n._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},n._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},n._process=function(){var t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),n=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),t>=n){var i=this._targets[this._targets.length-1];this._activeTarget!==i&&this._activate(i)}else{if(this._activeTarget&&t0)return this._activeTarget=null,void this._clear();for(var o=this._offsets.length;o--;){this._activeTarget!==this._targets[o]&&t>=this._offsets[o]&&(void 0===this._offsets[o+1]||t li > .active":".active";e=(e=V.find(o,i))[e.length-1]}var s=null;if(e&&(s=Q.trigger(e,"hide.bs.tab",{relatedTarget:this._element})),!(Q.trigger(this._element,"show.bs.tab",{relatedTarget:e}).defaultPrevented||null!==s&&s.defaultPrevented)){this._activate(this._element,i);var r=function(){Q.trigger(e,"hidden.bs.tab",{relatedTarget:t._element}),Q.trigger(t._element,"shown.bs.tab",{relatedTarget:e})};n?this._activate(n,n.parentNode,r):r()}}},n._activate=function(t,e,n){var i=this,o=(!e||"UL"!==e.nodeName&&"OL"!==e.nodeName?V.children(e,".active"):V.find(":scope > li > .active",e))[0],s=n&&o&&o.classList.contains("fade"),r=function(){return i._transitionComplete(t,o,n)};if(o&&s){var a=h(o);o.classList.remove("show"),Q.one(o,"transitionend",r),m(o,a)}else r()},n._transitionComplete=function(t,e,n){if(e){e.classList.remove("active");var i=V.findOne(":scope > .dropdown-menu .active",e.parentNode);i&&i.classList.remove("active"),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!1)}(t.classList.add("active"),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!0),y(t),t.classList.contains("fade")&&t.classList.add("show"),t.parentNode&&t.parentNode.classList.contains("dropdown-menu"))&&(t.closest(".dropdown")&&V.find(".dropdown-toggle").forEach((function(t){return t.classList.add("active")})),t.setAttribute("aria-expanded",!0));n&&n()},e.jQueryInterface=function(t){return this.each((function(){var n=L(this,"bs.tab")||new e(this);if("string"==typeof t){if(void 0===n[t])throw new TypeError('No method named "'+t+'"');n[t]()}}))},o(e,null,[{key:"DATA_KEY",get:function(){return"bs.tab"}}]),e}(U);Q.on(document,"click.bs.tab.data-api",'[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',(function(t){t.preventDefault(),(L(this,"bs.tab")||new Wt(this)).show()})),E((function(){var t=w();if(t){var e=t.fn.tab;t.fn.tab=Wt.jQueryInterface,t.fn.tab.Constructor=Wt,t.fn.tab.noConflict=function(){return t.fn.tab=e,Wt.jQueryInterface}}}));var Ft={animation:"boolean",autohide:"boolean",delay:"number"},Yt={animation:!0,autohide:!0,delay:5e3},zt=function(t){function e(e,n){var i;return(i=t.call(this,e)||this)._config=i._getConfig(n),i._timeout=null,i._setListeners(),i}r(e,t);var n=e.prototype;return n.show=function(){var t=this;if(!Q.trigger(this._element,"show.bs.toast").defaultPrevented){this._clearTimeout(),this._config.animation&&this._element.classList.add("fade");var e=function(){t._element.classList.remove("showing"),t._element.classList.add("show"),Q.trigger(t._element,"shown.bs.toast"),t._config.autohide&&(t._timeout=setTimeout((function(){t.hide()}),t._config.delay))};if(this._element.classList.remove("hide"),y(this._element),this._element.classList.add("showing"),this._config.animation){var n=h(this._element);Q.one(this._element,"transitionend",e),m(this._element,n)}else e()}},n.hide=function(){var t=this;if(this._element.classList.contains("show")&&!Q.trigger(this._element,"hide.bs.toast").defaultPrevented){var e=function(){t._element.classList.add("hide"),Q.trigger(t._element,"hidden.bs.toast")};if(this._element.classList.remove("show"),this._config.animation){var n=h(this._element);Q.one(this._element,"transitionend",e),m(this._element,n)}else e()}},n.dispose=function(){this._clearTimeout(),this._element.classList.contains("show")&&this._element.classList.remove("show"),Q.off(this._element,"click.dismiss.bs.toast"),t.prototype.dispose.call(this),this._config=null},n._getConfig=function(t){return t=s({},Yt,q.getDataAttributes(this._element),"object"==typeof t&&t?t:{}),_("toast",t,this.constructor.DefaultType),t},n._setListeners=function(){var t=this;Q.on(this._element,"click.dismiss.bs.toast",'[data-bs-dismiss="toast"]',(function(){return t.hide()}))},n._clearTimeout=function(){clearTimeout(this._timeout),this._timeout=null},e.jQueryInterface=function(t){return this.each((function(){var n=L(this,"bs.toast");if(n||(n=new e(this,"object"==typeof t&&t)),"string"==typeof t){if(void 0===n[t])throw new TypeError('No method named "'+t+'"');n[t](this)}}))},o(e,null,[{key:"DefaultType",get:function(){return Ft}},{key:"Default",get:function(){return Yt}},{key:"DATA_KEY",get:function(){return"bs.toast"}}]),e}(U);return E((function(){var t=w();if(t){var e=t.fn.toast;t.fn.toast=zt.jQueryInterface,t.fn.toast.Constructor=zt,t.fn.toast.noConflict=function(){return t.fn.toast=e,zt.jQueryInterface}}})),{Alert:F,Button:Y,Carousel:et,Collapse:st,Dropdown:mt,Modal:bt,Popover:Mt,ScrollSpy:Ut,Tab:Wt,Toast:zt,Tooltip:It}})); -//# sourceMappingURL=bootstrap.min.js.map \ No newline at end of file + * Bootstrap v4.0.0-alpha.2 (http://getbootstrap.com) + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ +if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1||b[0]>=3)throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v3.0.0")}(jQuery),+function(a){"use strict";function b(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}function c(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}var d=function(a,b,c){for(var d=!0;d;){var e=a,f=b,g=c;d=!1,null===e&&(e=Function.prototype);var h=Object.getOwnPropertyDescriptor(e,f);if(void 0!==h){if("value"in h)return h.value;var i=h.get;if(void 0===i)return;return i.call(g)}var j=Object.getPrototypeOf(e);if(null===j)return;a=j,b=f,c=g,d=!0,h=j=void 0}},e=function(){function a(a,b){for(var c=0;cthis._items.length-1||0>b)){if(this._isSliding)return void a(this._element).one(o.SLID,function(){return c.to(b)});if(d===b)return this.pause(),void this.cycle();var e=b>d?n.NEXT:n.PREVIOUS;this._slide(e,this._items[b])}}},{key:"dispose",value:function(){a(this._element).off(h),a.removeData(this._element,g),this._items=null,this._config=null,this._element=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null}},{key:"_getConfig",value:function(c){return c=a.extend({},l,c),f.typeCheckConfig(b,c,m),c}},{key:"_addEventListeners",value:function(){this._config.keyboard&&a(this._element).on(o.KEYDOWN,a.proxy(this._keydown,this)),"hover"!==this._config.pause||"ontouchstart"in document.documentElement||a(this._element).on(o.MOUSEENTER,a.proxy(this.pause,this)).on(o.MOUSELEAVE,a.proxy(this.cycle,this))}},{key:"_keydown",value:function(a){if(a.preventDefault(),!/input|textarea/i.test(a.target.tagName))switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}}},{key:"_getItemIndex",value:function(b){return this._items=a.makeArray(a(b).parent().find(q.ITEM)),this._items.indexOf(b)}},{key:"_getItemByDirection",value:function(a,b){var c=a===n.NEXT,d=a===n.PREVIOUS,e=this._getItemIndex(b),f=this._items.length-1,g=d&&0===e||c&&e===f;if(g&&!this._config.wrap)return b;var h=a===n.PREVIOUS?-1:1,i=(e+h)%this._items.length;return-1===i?this._items[this._items.length-1]:this._items[i]}},{key:"_triggerSlideEvent",value:function(b,c){var d=a.Event(o.SLIDE,{relatedTarget:b,direction:c});return a(this._element).trigger(d),d}},{key:"_setActiveIndicatorElement",value:function(b){if(this._indicatorsElement){a(this._indicatorsElement).find(q.ACTIVE).removeClass(p.ACTIVE);var c=this._indicatorsElement.children[this._getItemIndex(b)];c&&a(c).addClass(p.ACTIVE)}}},{key:"_slide",value:function(b,c){var d=this,e=a(this._element).find(q.ACTIVE_ITEM)[0],g=c||e&&this._getItemByDirection(b,e),h=Boolean(this._interval),i=b===n.NEXT?p.LEFT:p.RIGHT;if(g&&a(g).hasClass(p.ACTIVE))return void(this._isSliding=!1);var j=this._triggerSlideEvent(g,i);if(!j.isDefaultPrevented()&&e&&g){this._isSliding=!0,h&&this.pause(),this._setActiveIndicatorElement(g);var l=a.Event(o.SLID,{relatedTarget:g,direction:i});f.supportsTransitionEnd()&&a(this._element).hasClass(p.SLIDE)?(a(g).addClass(b),f.reflow(g),a(e).addClass(i),a(g).addClass(i),a(e).one(f.TRANSITION_END,function(){a(g).removeClass(i).removeClass(b),a(g).addClass(p.ACTIVE),a(e).removeClass(p.ACTIVE).removeClass(b).removeClass(i),d._isSliding=!1,setTimeout(function(){return a(d._element).trigger(l)},0)}).emulateTransitionEnd(k)):(a(e).removeClass(p.ACTIVE),a(g).addClass(p.ACTIVE),this._isSliding=!1,a(this._element).trigger(l)),h&&this.cycle()}}}],[{key:"_jQueryInterface",value:function(b){return this.each(function(){var c=a(this).data(g),d=a.extend({},l,a(this).data());"object"==typeof b&&a.extend(d,b);var e="string"==typeof b?b:d.slide;if(c||(c=new i(this,d),a(this).data(g,c)),"number"==typeof b)c.to(b);else if("string"==typeof e){if(void 0===c[e])throw new Error('No method named "'+e+'"');c[e]()}else d.interval&&(c.pause(),c.cycle())})}},{key:"_dataApiClickHandler",value:function(b){var c=f.getSelectorFromElement(this);if(c){var d=a(c)[0];if(d&&a(d).hasClass(p.CAROUSEL)){var e=a.extend({},a(d).data(),a(this).data()),h=this.getAttribute("data-slide-to");h&&(e.interval=!1),i._jQueryInterface.call(a(d),e),h&&a(d).data(g).to(h),b.preventDefault()}}}},{key:"VERSION",get:function(){return d}},{key:"Default",get:function(){return l}}]),i}();return a(document).on(o.CLICK_DATA_API,q.DATA_SLIDE,r._dataApiClickHandler),a(window).on(o.LOAD_DATA_API,function(){a(q.DATA_RIDE).each(function(){var b=a(this);r._jQueryInterface.call(b,b.data())})}),a.fn[b]=r._jQueryInterface,a.fn[b].Constructor=r,a.fn[b].noConflict=function(){return a.fn[b]=j,r._jQueryInterface},r}(jQuery),function(a){var b="collapse",d="4.0.0-alpha",g="bs.collapse",h="."+g,i=".data-api",j=a.fn[b],k=600,l={toggle:!0,parent:""},m={toggle:"boolean",parent:"string"},n={SHOW:"show"+h,SHOWN:"shown"+h,HIDE:"hide"+h,HIDDEN:"hidden"+h,CLICK_DATA_API:"click"+h+i},o={IN:"in",COLLAPSE:"collapse",COLLAPSING:"collapsing",COLLAPSED:"collapsed"},p={WIDTH:"width",HEIGHT:"height"},q={ACTIVES:".panel > .in, .panel > .collapsing",DATA_TOGGLE:'[data-toggle="collapse"]'},r=function(){function h(b,d){c(this,h),this._isTransitioning=!1,this._element=b,this._config=this._getConfig(d),this._triggerArray=a.makeArray(a('[data-toggle="collapse"][href="#'+b.id+'"],'+('[data-toggle="collapse"][data-target="#'+b.id+'"]'))),this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}return e(h,[{key:"toggle",value:function(){a(this._element).hasClass(o.IN)?this.hide():this.show()}},{key:"show",value:function(){var b=this;if(!this._isTransitioning&&!a(this._element).hasClass(o.IN)){var c=void 0,d=void 0;if(this._parent&&(c=a.makeArray(a(q.ACTIVES)),c.length||(c=null)),!(c&&(d=a(c).data(g),d&&d._isTransitioning))){var e=a.Event(n.SHOW);if(a(this._element).trigger(e),!e.isDefaultPrevented()){c&&(h._jQueryInterface.call(a(c),"hide"),d||a(c).data(g,null));var i=this._getDimension();a(this._element).removeClass(o.COLLAPSE).addClass(o.COLLAPSING),this._element.style[i]=0,this._element.setAttribute("aria-expanded",!0),this._triggerArray.length&&a(this._triggerArray).removeClass(o.COLLAPSED).attr("aria-expanded",!0),this.setTransitioning(!0);var j=function(){a(b._element).removeClass(o.COLLAPSING).addClass(o.COLLAPSE).addClass(o.IN),b._element.style[i]="",b.setTransitioning(!1),a(b._element).trigger(n.SHOWN)};if(!f.supportsTransitionEnd())return void j();var l=i[0].toUpperCase()+i.slice(1),m="scroll"+l;a(this._element).one(f.TRANSITION_END,j).emulateTransitionEnd(k),this._element.style[i]=this._element[m]+"px"}}}}},{key:"hide",value:function(){var b=this;if(!this._isTransitioning&&a(this._element).hasClass(o.IN)){var c=a.Event(n.HIDE);if(a(this._element).trigger(c),!c.isDefaultPrevented()){var d=this._getDimension(),e=d===p.WIDTH?"offsetWidth":"offsetHeight";this._element.style[d]=this._element[e]+"px",f.reflow(this._element),a(this._element).addClass(o.COLLAPSING).removeClass(o.COLLAPSE).removeClass(o.IN),this._element.setAttribute("aria-expanded",!1),this._triggerArray.length&&a(this._triggerArray).addClass(o.COLLAPSED).attr("aria-expanded",!1),this.setTransitioning(!0);var g=function(){b.setTransitioning(!1),a(b._element).removeClass(o.COLLAPSING).addClass(o.COLLAPSE).trigger(n.HIDDEN)};return this._element.style[d]=0,f.supportsTransitionEnd()?void a(this._element).one(f.TRANSITION_END,g).emulateTransitionEnd(k):void g()}}}},{key:"setTransitioning",value:function(a){this._isTransitioning=a}},{key:"dispose",value:function(){a.removeData(this._element,g),this._config=null,this._parent=null,this._element=null,this._triggerArray=null,this._isTransitioning=null}},{key:"_getConfig",value:function(c){return c=a.extend({},l,c),c.toggle=Boolean(c.toggle),f.typeCheckConfig(b,c,m),c}},{key:"_getDimension",value:function(){var b=a(this._element).hasClass(p.WIDTH);return b?p.WIDTH:p.HEIGHT}},{key:"_getParent",value:function(){var b=this,c=a(this._config.parent)[0],d='[data-toggle="collapse"][data-parent="'+this._config.parent+'"]';return a(c).find(d).each(function(a,c){b._addAriaAndCollapsedClass(h._getTargetFromElement(c),[c])}),c}},{key:"_addAriaAndCollapsedClass",value:function(b,c){if(b){var d=a(b).hasClass(o.IN);b.setAttribute("aria-expanded",d),c.length&&a(c).toggleClass(o.COLLAPSED,!d).attr("aria-expanded",d)}}}],[{key:"_getTargetFromElement",value:function(b){var c=f.getSelectorFromElement(b);return c?a(c)[0]:null}},{key:"_jQueryInterface",value:function(b){return this.each(function(){var c=a(this),d=c.data(g),e=a.extend({},l,c.data(),"object"==typeof b&&b);if(!d&&e.toggle&&/show|hide/.test(b)&&(e.toggle=!1),d||(d=new h(this,e),c.data(g,d)),"string"==typeof b){if(void 0===d[b])throw new Error('No method named "'+b+'"');d[b]()}})}},{key:"VERSION",get:function(){return d}},{key:"Default",get:function(){return l}}]),h}();return a(document).on(n.CLICK_DATA_API,q.DATA_TOGGLE,function(b){b.preventDefault();var c=r._getTargetFromElement(this),d=a(c).data(g),e=d?"toggle":a(this).data();r._jQueryInterface.call(a(c),e)}),a.fn[b]=r._jQueryInterface,a.fn[b].Constructor=r,a.fn[b].noConflict=function(){return a.fn[b]=j,r._jQueryInterface},r}(jQuery),function(a){var b="dropdown",d="4.0.0-alpha",g="bs.dropdown",h="."+g,i=".data-api",j=a.fn[b],k={HIDE:"hide"+h,HIDDEN:"hidden"+h,SHOW:"show"+h,SHOWN:"shown"+h,CLICK:"click"+h,CLICK_DATA_API:"click"+h+i,KEYDOWN_DATA_API:"keydown"+h+i},l={BACKDROP:"dropdown-backdrop",DISABLED:"disabled",OPEN:"open"},m={BACKDROP:".dropdown-backdrop",DATA_TOGGLE:'[data-toggle="dropdown"]',FORM_CHILD:".dropdown form",ROLE_MENU:'[role="menu"]',ROLE_LISTBOX:'[role="listbox"]',NAVBAR_NAV:".navbar-nav",VISIBLE_ITEMS:'[role="menu"] li:not(.disabled) a, [role="listbox"] li:not(.disabled) a'},n=function(){function b(a){c(this,b),this._element=a,this._addEventListeners()}return e(b,[{key:"toggle",value:function(){if(this.disabled||a(this).hasClass(l.DISABLED))return!1;var c=b._getParentFromElement(this),d=a(c).hasClass(l.OPEN);if(b._clearMenus(),d)return!1;if("ontouchstart"in document.documentElement&&!a(c).closest(m.NAVBAR_NAV).length){var e=document.createElement("div");e.className=l.BACKDROP,a(e).insertBefore(this),a(e).on("click",b._clearMenus)}var f={relatedTarget:this},g=a.Event(k.SHOW,f);return a(c).trigger(g),g.isDefaultPrevented()?!1:(this.focus(),this.setAttribute("aria-expanded","true"),a(c).toggleClass(l.OPEN),a(c).trigger(a.Event(k.SHOWN,f)),!1)}},{key:"dispose",value:function(){a.removeData(this._element,g),a(this._element).off(h),this._element=null}},{key:"_addEventListeners",value:function(){a(this._element).on(k.CLICK,this.toggle)}}],[{key:"_jQueryInterface",value:function(c){return this.each(function(){var d=a(this).data(g);if(d||a(this).data(g,d=new b(this)),"string"==typeof c){if(void 0===d[c])throw new Error('No method named "'+c+'"');d[c].call(this)}})}},{key:"_clearMenus",value:function(c){if(!c||3!==c.which){var d=a(m.BACKDROP)[0];d&&d.parentNode.removeChild(d);for(var e=a.makeArray(a(m.DATA_TOGGLE)),f=0;f0&&h--,40===c.which&&hdocument.documentElement.clientHeight;!this._isBodyOverflowing&&a&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!a&&(this._element.style.paddingRight=this._scrollbarWidth+"px~")}},{key:"_resetAdjustments",value:function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}},{key:"_checkScrollbar",value:function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this._isBodyOverflowing=document.body.clientWidth=c){var d=this._targets[this._targets.length-1];this._activeTarget!==d&&this._activate(d)}if(this._activeTarget&&a=this._offsets[e]&&(void 0===this._offsets[e+1]||a .nav-item .fade, > .fade",ACTIVE:".active",ACTIVE_CHILD:"> .nav-item > .active, > .active", +DATA_TOGGLE:'[data-toggle="tab"], [data-toggle="pill"]',DROPDOWN_TOGGLE:".dropdown-toggle",DROPDOWN_ACTIVE_CHILD:"> .dropdown-menu .active"},o=function(){function b(a){c(this,b),this._element=a}return e(b,[{key:"show",value:function(){var b=this;if(!this._element.parentNode||this._element.parentNode.nodeType!==Node.ELEMENT_NODE||!a(this._element).hasClass(m.ACTIVE)){var c=void 0,d=void 0,e=a(this._element).closest(n.UL)[0],g=f.getSelectorFromElement(this._element);e&&(d=a.makeArray(a(e).find(n.ACTIVE)),d=d[d.length-1]);var h=a.Event(l.HIDE,{relatedTarget:this._element}),i=a.Event(l.SHOW,{relatedTarget:d});if(d&&a(d).trigger(h),a(this._element).trigger(i),!i.isDefaultPrevented()&&!h.isDefaultPrevented()){g&&(c=a(g)[0]),this._activate(this._element,e);var j=function(){var c=a.Event(l.HIDDEN,{relatedTarget:b._element}),e=a.Event(l.SHOWN,{relatedTarget:d});a(d).trigger(c),a(b._element).trigger(e)};c?this._activate(c,c.parentNode,j):j()}}}},{key:"dispose",value:function(){a.removeClass(this._element,g),this._element=null}},{key:"_activate",value:function(b,c,d){var e=a(c).find(n.ACTIVE_CHILD)[0],g=d&&f.supportsTransitionEnd()&&(e&&a(e).hasClass(m.FADE)||Boolean(a(c).find(n.FADE_CHILD)[0])),h=a.proxy(this._transitionComplete,this,b,e,g,d);e&&g?a(e).one(f.TRANSITION_END,h).emulateTransitionEnd(k):h(),e&&a(e).removeClass(m.IN)}},{key:"_transitionComplete",value:function(b,c,d,e){if(c){a(c).removeClass(m.ACTIVE);var g=a(c).find(n.DROPDOWN_ACTIVE_CHILD)[0];g&&a(g).removeClass(m.ACTIVE),c.setAttribute("aria-expanded",!1)}if(a(b).addClass(m.ACTIVE),b.setAttribute("aria-expanded",!0),d?(f.reflow(b),a(b).addClass(m.IN)):a(b).removeClass(m.FADE),b.parentNode&&a(b.parentNode).hasClass(m.DROPDOWN_MENU)){var h=a(b).closest(n.DROPDOWN)[0];h&&a(h).find(n.DROPDOWN_TOGGLE).addClass(m.ACTIVE),b.setAttribute("aria-expanded",!0)}e&&e()}}],[{key:"_jQueryInterface",value:function(c){return this.each(function(){var d=a(this),e=d.data(g);if(e||(e=e=new b(this),d.data(g,e)),"string"==typeof c){if(void 0===e[c])throw new Error('No method named "'+c+'"');e[c]()}})}},{key:"VERSION",get:function(){return d}}]),b}();return a(document).on(l.CLICK_DATA_API,n.DATA_TOGGLE,function(b){b.preventDefault(),o._jQueryInterface.call(a(this),"show")}),a.fn[b]=o._jQueryInterface,a.fn[b].Constructor=o,a.fn[b].noConflict=function(){return a.fn[b]=j,o._jQueryInterface},o}(jQuery),function(a){if(void 0===window.Tether)throw new Error("Bootstrap tooltips require Tether (http://github.hubspot.com/tether/)");var b="tooltip",d="4.0.0-alpha",g="bs.tooltip",h="."+g,i=a.fn[b],j=150,k="bs-tether",l={animation:!0,template:'',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:"0 0",constraints:[]},m={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"string",constraints:"array"},n={TOP:"bottom center",RIGHT:"middle left",BOTTOM:"top center",LEFT:"middle right"},o={IN:"in",OUT:"out"},p={HIDE:"hide"+h,HIDDEN:"hidden"+h,SHOW:"show"+h,SHOWN:"shown"+h,INSERTED:"inserted"+h,CLICK:"click"+h,FOCUSIN:"focusin"+h,FOCUSOUT:"focusout"+h,MOUSEENTER:"mouseenter"+h,MOUSELEAVE:"mouseleave"+h},q={FADE:"fade",IN:"in"},r={TOOLTIP:".tooltip",TOOLTIP_INNER:".tooltip-inner"},s={element:!1,enabled:!1},t={HOVER:"hover",FOCUS:"focus",CLICK:"click",MANUAL:"manual"},u=function(){function i(a,b){c(this,i),this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._tether=null,this.element=a,this.config=this._getConfig(b),this.tip=null,this._setListeners()}return e(i,[{key:"enable",value:function(){this._isEnabled=!0}},{key:"disable",value:function(){this._isEnabled=!1}},{key:"toggleEnabled",value:function(){this._isEnabled=!this._isEnabled}},{key:"toggle",value:function(b){if(b){var c=this.constructor.DATA_KEY,d=a(b.currentTarget).data(c);d||(d=new this.constructor(b.currentTarget,this._getDelegateConfig()),a(b.currentTarget).data(c,d)),d._activeTrigger.click=!d._activeTrigger.click,d._isWithActiveTrigger()?d._enter(null,d):d._leave(null,d)}else{if(a(this.getTipElement()).hasClass(q.IN))return void this._leave(null,this);this._enter(null,this)}}},{key:"dispose",value:function(){clearTimeout(this._timeout),this.cleanupTether(),a.removeData(this.element,this.constructor.DATA_KEY),a(this.element).off(this.constructor.EVENT_KEY),this.tip&&a(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,this._tether=null,this.element=null,this.config=null,this.tip=null}},{key:"show",value:function(){var b=this,c=a.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){a(this.element).trigger(c);var d=a.contains(this.element.ownerDocument.documentElement,this.element);if(c.isDefaultPrevented()||!d)return;var e=this.getTipElement(),g=f.getUID(this.constructor.NAME);e.setAttribute("id",g),this.element.setAttribute("aria-describedby",g),this.setContent(),this.config.animation&&a(e).addClass(q.FADE);var h="function"==typeof this.config.placement?this.config.placement.call(this,e,this.element):this.config.placement,j=this._getAttachment(h);a(e).data(this.constructor.DATA_KEY,this).appendTo(document.body),a(this.element).trigger(this.constructor.Event.INSERTED),this._tether=new Tether({attachment:j,element:e,target:this.element,classes:s,classPrefix:k,offset:this.config.offset,constraints:this.config.constraints,addTargetClasses:!1}),f.reflow(e),this._tether.position(),a(e).addClass(q.IN);var l=function(){var c=b._hoverState;b._hoverState=null,a(b.element).trigger(b.constructor.Event.SHOWN),c===o.OUT&&b._leave(null,b)};if(f.supportsTransitionEnd()&&a(this.tip).hasClass(q.FADE))return void a(this.tip).one(f.TRANSITION_END,l).emulateTransitionEnd(i._TRANSITION_DURATION);l()}}},{key:"hide",value:function(b){var c=this,d=this.getTipElement(),e=a.Event(this.constructor.Event.HIDE),g=function(){c._hoverState!==o.IN&&d.parentNode&&d.parentNode.removeChild(d),c.element.removeAttribute("aria-describedby"),a(c.element).trigger(c.constructor.Event.HIDDEN),c.cleanupTether(),b&&b()};a(this.element).trigger(e),e.isDefaultPrevented()||(a(d).removeClass(q.IN),f.supportsTransitionEnd()&&a(this.tip).hasClass(q.FADE)?a(d).one(f.TRANSITION_END,g).emulateTransitionEnd(j):g(),this._hoverState="")}},{key:"isWithContent",value:function(){return Boolean(this.getTitle())}},{key:"getTipElement",value:function(){return this.tip=this.tip||a(this.config.template)[0]}},{key:"setContent",value:function(){var b=a(this.getTipElement());this.setElementContent(b.find(r.TOOLTIP_INNER),this.getTitle()),b.removeClass(q.FADE).removeClass(q.IN),this.cleanupTether()}},{key:"setElementContent",value:function(b,c){var d=this.config.html;"object"==typeof c&&(c.nodeType||c.jquery)?d?a(c).parent().is(b)||b.empty().append(c):b.text(a(c).text()):b[d?"html":"text"](c)}},{key:"getTitle",value:function(){var a=this.element.getAttribute("data-original-title");return a||(a="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),a}},{key:"cleanupTether",value:function(){this._tether&&this._tether.destroy()}},{key:"_getAttachment",value:function(a){return n[a.toUpperCase()]}},{key:"_setListeners",value:function(){var b=this,c=this.config.trigger.split(" ");c.forEach(function(c){if("click"===c)a(b.element).on(b.constructor.Event.CLICK,b.config.selector,a.proxy(b.toggle,b));else if(c!==t.MANUAL){var d=c===t.HOVER?b.constructor.Event.MOUSEENTER:b.constructor.Event.FOCUSIN,e=c===t.HOVER?b.constructor.Event.MOUSELEAVE:b.constructor.Event.FOCUSOUT;a(b.element).on(d,b.config.selector,a.proxy(b._enter,b)).on(e,b.config.selector,a.proxy(b._leave,b))}}),this.config.selector?this.config=a.extend({},this.config,{trigger:"manual",selector:""}):this._fixTitle()}},{key:"_fixTitle",value:function(){var a=typeof this.element.getAttribute("data-original-title");(this.element.getAttribute("title")||"string"!==a)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))}},{key:"_enter",value:function(b,c){var d=this.constructor.DATA_KEY;return c=c||a(b.currentTarget).data(d),c||(c=new this.constructor(b.currentTarget,this._getDelegateConfig()),a(b.currentTarget).data(d,c)),b&&(c._activeTrigger["focusin"===b.type?t.FOCUS:t.HOVER]=!0),a(c.getTipElement()).hasClass(q.IN)||c._hoverState===o.IN?void(c._hoverState=o.IN):(clearTimeout(c._timeout),c._hoverState=o.IN,c.config.delay&&c.config.delay.show?void(c._timeout=setTimeout(function(){c._hoverState===o.IN&&c.show()},c.config.delay.show)):void c.show())}},{key:"_leave",value:function(b,c){var d=this.constructor.DATA_KEY;return c=c||a(b.currentTarget).data(d),c||(c=new this.constructor(b.currentTarget,this._getDelegateConfig()),a(b.currentTarget).data(d,c)),b&&(c._activeTrigger["focusout"===b.type?t.FOCUS:t.HOVER]=!1),c._isWithActiveTrigger()?void 0:(clearTimeout(c._timeout),c._hoverState=o.OUT,c.config.delay&&c.config.delay.hide?void(c._timeout=setTimeout(function(){c._hoverState===o.OUT&&c.hide()},c.config.delay.hide)):void c.hide())}},{key:"_isWithActiveTrigger",value:function(){for(var a in this._activeTrigger)if(this._activeTrigger[a])return!0;return!1}},{key:"_getConfig",value:function(c){return c=a.extend({},this.constructor.Default,a(this.element).data(),c),c.delay&&"number"==typeof c.delay&&(c.delay={show:c.delay,hide:c.delay}),f.typeCheckConfig(b,c,this.constructor.DefaultType),c}},{key:"_getDelegateConfig",value:function(){var a={};if(this.config)for(var b in this.config)this.constructor.Default[b]!==this.config[b]&&(a[b]=this.config[b]);return a}}],[{key:"_jQueryInterface",value:function(b){return this.each(function(){var c=a(this).data(g),d="object"==typeof b?b:null;if((c||!/destroy|hide/.test(b))&&(c||(c=new i(this,d),a(this).data(g,c)),"string"==typeof b)){if(void 0===c[b])throw new Error('No method named "'+b+'"');c[b]()}})}},{key:"VERSION",get:function(){return d}},{key:"Default",get:function(){return l}},{key:"NAME",get:function(){return b}},{key:"DATA_KEY",get:function(){return g}},{key:"Event",get:function(){return p}},{key:"EVENT_KEY",get:function(){return h}},{key:"DefaultType",get:function(){return m}}]),i}();return a.fn[b]=u._jQueryInterface,a.fn[b].Constructor=u,a.fn[b].noConflict=function(){return a.fn[b]=i,u._jQueryInterface},u}(jQuery));(function(a){var f="popover",h="4.0.0-alpha",i="bs.popover",j="."+i,k=a.fn[f],l=a.extend({},g.Default,{placement:"right",trigger:"click",content:"",template:''}),m=a.extend({},g.DefaultType,{content:"(string|element|function)"}),n={FADE:"fade",IN:"in"},o={TITLE:".popover-title",CONTENT:".popover-content",ARROW:".popover-arrow"},p={HIDE:"hide"+j,HIDDEN:"hidden"+j,SHOW:"show"+j,SHOWN:"shown"+j,INSERTED:"inserted"+j,CLICK:"click"+j,FOCUSIN:"focusin"+j,FOCUSOUT:"focusout"+j,MOUSEENTER:"mouseenter"+j,MOUSELEAVE:"mouseleave"+j},q=function(g){function k(){c(this,k),d(Object.getPrototypeOf(k.prototype),"constructor",this).apply(this,arguments)}return b(k,g),e(k,[{key:"isWithContent",value:function(){return this.getTitle()||this._getContent()}},{key:"getTipElement",value:function(){return this.tip=this.tip||a(this.config.template)[0]}},{key:"setContent",value:function(){var b=a(this.getTipElement());this.setElementContent(b.find(o.TITLE),this.getTitle()),this.setElementContent(b.find(o.CONTENT),this._getContent()),b.removeClass(n.FADE).removeClass(n.IN),this.cleanupTether()}},{key:"_getContent",value:function(){return this.element.getAttribute("data-content")||("function"==typeof this.config.content?this.config.content.call(this.element):this.config.content)}}],[{key:"_jQueryInterface",value:function(b){return this.each(function(){var c=a(this).data(i),d="object"==typeof b?b:null;if((c||!/destroy|hide/.test(b))&&(c||(c=new k(this,d),a(this).data(i,c)),"string"==typeof b)){if(void 0===c[b])throw new Error('No method named "'+b+'"');c[b]()}})}},{key:"VERSION",get:function(){return h}},{key:"Default",get:function(){return l}},{key:"NAME",get:function(){return f}},{key:"DATA_KEY",get:function(){return i}},{key:"Event",get:function(){return p}},{key:"EVENT_KEY",get:function(){return j}},{key:"DefaultType",get:function(){return m}}]),k}(g);return a.fn[f]=q._jQueryInterface,a.fn[f].Constructor=q,a.fn[f].noConflict=function(){return a.fn[f]=k,q._jQueryInterface},q})(jQuery)}(jQuery); \ No newline at end of file diff --git a/dist/js/bootstrap.min.js.map b/dist/js/bootstrap.min.js.map deleted file mode 100644 index 20ae2d66a..000000000 --- a/dist/js/bootstrap.min.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../../js/src/util/index.js","../../js/src/dom/data.js","../../js/src/dom/event-handler.js","../../js/src/base-component.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/dom/manipulator.js","../../js/src/dom/selector-engine.js","../../js/src/carousel.js","../../js/src/collapse.js","../../js/src/dropdown.js","../../js/src/modal.js","../../js/src/util/sanitizer.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/toast.js","../../js/index.umd.js"],"names":["storeData","id","getUID","prefix","Math","floor","random","document","getElementById","getSelector","element","selector","getAttribute","hrefAttr","trim","getSelectorFromElement","querySelector","getElementFromSelector","getTransitionDurationFromElement","_window$getComputedSt","window","getComputedStyle","transitionDuration","transitionDelay","floatTransitionDuration","Number","parseFloat","floatTransitionDelay","split","triggerTransitionEnd","dispatchEvent","Event","isElement","obj","nodeType","emulateTransitionEnd","duration","called","emulatedDuration","addEventListener","listener","removeEventListener","setTimeout","typeCheckConfig","componentName","config","configTypes","Object","keys","forEach","property","expectedTypes","value","valueType","toString","call","match","toLowerCase","RegExp","test","Error","toUpperCase","isVisible","style","parentNode","elementStyle","parentNodeStyle","display","visibility","noop","reflow","offsetHeight","getjQuery","jQuery","body","hasAttribute","onDOMContentLoaded","callback","readyState","isRTL","documentElement","dir","mapData","set","key","data","bsKey","get","keyProperties","delete","Data","instance","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","nativeEvents","Set","getUidEvent","uid","getEvent","findHandler","events","handler","delegationSelector","uidEventList","i","len","length","event","originalHandler","normalizeParams","originalTypeEvent","delegationFn","delegation","typeEvent","replace","custom","has","addHandler","oneOff","_normalizeParams","handlers","previousFn","fn","domElements","querySelectorAll","target","this","delegateTarget","EventHandler","off","type","apply","bootstrapDelegationHandler","bootstrapHandler","removeHandler","Boolean","on","one","_normalizeParams2","inNamespace","isNamespace","startsWith","elementEvent","namespace","storeElementEvent","handlerKey","includes","removeNamespacedHandlers","slice","keyHandlers","trigger","args","jQueryEvent","$","isNative","bubbles","nativeDispatch","defaultPrevented","evt","isPropagationStopped","isImmediatePropagationStopped","isDefaultPrevented","createEvent","initEvent","CustomEvent","cancelable","defineProperty","preventDefault","BaseComponent","_element","constructor","DATA_KEY","dispose","getInstance","NAME","Alert","close","rootElement","_getRootElement","customEvent","_triggerCloseEvent","_removeElement","closest","_this","classList","remove","contains","_destroyElement","removeChild","jQueryInterface","each","handleDismiss","alertInstance","JQUERY_NO_CONFLICT","Constructor","noConflict","Button","toggle","setAttribute","normalizeData","val","normalizeDataKey","chr","button","Manipulator","setDataAttribute","removeDataAttribute","removeAttribute","getDataAttributes","attributes","dataset","filter","pureKey","charAt","getDataAttribute","offset","rect","getBoundingClientRect","top","scrollTop","left","scrollLeft","position","offsetTop","offsetLeft","SelectorEngine","matches","find","_ref","concat","Element","prototype","findOne","children","_ref2","child","parents","ancestor","Node","ELEMENT_NODE","push","prev","previous","previousElementSibling","next","nextElementSibling","EVENT_KEY","Default","interval","keyboard","slide","pause","wrap","touch","DefaultType","PointerType","TOUCH","PEN","Carousel","_BaseComponent","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","touchStartX","touchDeltaX","_config","_getConfig","_indicatorsElement","_touchSupported","navigator","maxTouchPoints","_pointerEvent","PointerEvent","_addEventListeners","_slide","nextWhenVisible","hidden","cycle","clearInterval","_updateInterval","setInterval","visibilityState","bind","to","index","_this2","activeIndex","_getItemIndex","direction","_extends","_handleSwipe","absDeltax","abs","_this3","_keydown","_addTouchEventListeners","_this4","start","pointerType","clientX","touches","end","clearTimeout","itemImg","e","add","move","tagName","indexOf","_getItemByDirection","activeElement","isNextDirection","isPrevDirection","lastItemIndex","itemIndex","_triggerSlideEvent","relatedTarget","eventDirectionName","targetIndex","fromIndex","from","_setActiveIndicatorElement","indicators","nextIndicator","elementInterval","parseInt","defaultInterval","directionalClassName","orderClassName","_this5","activeElementIndex","nextElement","nextElementIndex","isCycling","carouselInterface","action","TypeError","ride","dataApiClickHandler","slideIndex","carousels","parent","Collapse","_isTransitioning","_triggerArray","SELECTOR_DATA_TOGGLE","toggleList","elem","filterElement","foundElem","_selector","_parent","_getParent","_addAriaAndCollapsedClass","hide","show","actives","activesData","container","tempActiveData","elemActive","collapseInterface","dimension","_getDimension","setTransitioning","scrollSize","triggerArrayLength","isTransitioning","jquery","selected","triggerArray","isOpen","triggerData","REGEXP_KEYDOWN","ARROW_UP_KEY","PLACEMENT_TOP","PLACEMENT_TOPEND","PLACEMENT_BOTTOM","PLACEMENT_BOTTOMEND","PLACEMENT_RIGHT","PLACEMENT_LEFT","flip","boundary","reference","popperConfig","Dropdown","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","disabled","isActive","clearMenus","getParentFromElement","Popper","referenceElement","_getPopperConfig","focus","destroy","update","stopPropagation","_getPlacement","parentDropdown","isEnd","getPropertyValue","placement","modifiers","name","options","altBoundary","rootBoundary","enabled","dropdownInterface","toggles","context","clickEvent","dropdownMenu","dataApiKeydownHandler","items","backdrop","Modal","_dialog","_backdrop","_isShown","_isBodyOverflowing","_ignoreBackdropClick","_scrollbarWidth","showEvent","_checkScrollbar","_setScrollbar","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","transition","_hideModal","htmlElement","handleUpdate","modalBody","appendChild","_enforceFocus","transitionComplete","_this6","_triggerBackdropTransition","_this7","_this8","_resetAdjustments","_resetScrollbar","_removeBackdrop","_this9","animate","createElement","className","currentTarget","backdropTransitionDuration","callbackRemove","_this10","isModalOverflowing","scrollHeight","clientHeight","overflowY","modalTransitionDuration","paddingLeft","paddingRight","round","right","innerWidth","_getScrollbarWidth","_this11","actualPadding","calculatedPadding","actualMargin","marginRight","calculatedMargin","padding","margin","scrollDiv","scrollbarWidth","width","clientWidth","_this12","uriAttrs","SAFE_URL_PATTERN","DATA_URL_PATTERN","DefaultAllowlist","*","a","area","b","br","col","code","div","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","p","pre","s","small","span","sub","sup","strong","u","ul","sanitizeHtml","unsafeHtml","allowList","sanitizeFn","createdDocument","DOMParser","parseFromString","allowlistKeys","elements","_loop","el","elName","nodeName","attributeList","allowedAttributes","attr","allowedAttributeList","attrName","nodeValue","regExp","attrRegex","allowedAttribute","innerHTML","BSCLS_PREFIX_REGEX","DISALLOWED_ATTRIBUTES","animation","template","title","delay","html","fallbackPlacements","customClass","sanitize","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","HIDE","HIDDEN","SHOW","SHOWN","INSERTED","CLICK","FOCUSIN","FOCUSOUT","MOUSEENTER","MOUSELEAVE","Tooltip","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","enable","disable","toggleEnabled","dataKey","_getDelegateConfig","click","_isWithActiveTrigger","_enter","_leave","getTipElement","_hideModalHandler","isWithContent","shadowRoot","findShadowRoot","attachShadow","getRootNode","root","ShadowRoot","isInTheDom","ownerDocument","tipId","setContent","attachment","_getAttachment","_addAttachmentClass","_getContainer","_tip$classList","complete","prevHoverState","_cleanTipClass","getTitle","setElementContent","content","textContent","updateAttachment","flipModifier","phase","_handlePopperPlacementChange","onFirstUpdate","CLASS_PREFIX","eventIn","eventOut","_fixTitle","originalTitleType","dataAttributes","dataAttr","tabClass","map","token","tClass","popperData","state","popper","Popover","_getContent","method","ScrollSpy","_scrollElement","_offsets","_targets","_activeTarget","_scrollHeight","_process","refresh","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","targetSelector","targetBCR","height","item","sort","pageYOffset","max","_getOffsetHeight","innerHeight","maxScroll","_activate","_clear","queries","link","join","listGroup","SELECTOR_NAV_LINKS","navItem","node","spy","Tab","listElement","itemSelector","hideEvent","active","_transitionComplete","dropdownChild","dropdown","autohide","Toast","_clearTimeout"],"mappings":"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","sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1000000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n// Shoutout AngusCroll (https://goo.gl/pxwQGp)\nconst toType = obj => {\n if (obj === null || obj === undefined) {\n return `${obj}`\n }\n\n return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\n/**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\nconst getUID = prefix => {\n do {\n prefix += Math.floor(Math.random() * MAX_UID)\n } while (document.getElementById(prefix))\n\n return prefix\n}\n\nconst getSelector = element => {\n let selector = element.getAttribute('data-bs-target')\n\n if (!selector || selector === '#') {\n const hrefAttr = element.getAttribute('href')\n\n selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null\n }\n\n return selector\n}\n\nconst getSelectorFromElement = element => {\n const selector = getSelector(element)\n\n if (selector) {\n return document.querySelector(selector) ? selector : null\n }\n\n return null\n}\n\nconst getElementFromSelector = element => {\n const selector = getSelector(element)\n\n return selector ? document.querySelector(selector) : null\n}\n\nconst getTransitionDurationFromElement = element => {\n if (!element) {\n return 0\n }\n\n // Get transition-duration of the element\n let { transitionDuration, transitionDelay } = window.getComputedStyle(element)\n\n const floatTransitionDuration = Number.parseFloat(transitionDuration)\n const floatTransitionDelay = Number.parseFloat(transitionDelay)\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0]\n transitionDelay = transitionDelay.split(',')[0]\n\n return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = element => {\n element.dispatchEvent(new Event(TRANSITION_END))\n}\n\nconst isElement = obj => (obj[0] || obj).nodeType\n\nconst emulateTransitionEnd = (element, duration) => {\n let called = false\n const durationPadding = 5\n const emulatedDuration = duration + durationPadding\n\n function listener() {\n called = true\n element.removeEventListener(TRANSITION_END, listener)\n }\n\n element.addEventListener(TRANSITION_END, listener)\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(element)\n }\n }, emulatedDuration)\n}\n\nconst typeCheckConfig = (componentName, config, configTypes) => {\n Object.keys(configTypes).forEach(property => {\n const expectedTypes = configTypes[property]\n const value = config[property]\n const valueType = value && isElement(value) ?\n 'element' :\n toType(value)\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new Error(\n `${componentName.toUpperCase()}: ` +\n `Option \"${property}\" provided type \"${valueType}\" ` +\n `but expected type \"${expectedTypes}\".`)\n }\n })\n}\n\nconst isVisible = element => {\n if (!element) {\n return false\n }\n\n if (element.style && element.parentNode && element.parentNode.style) {\n const elementStyle = getComputedStyle(element)\n const parentNodeStyle = getComputedStyle(element.parentNode)\n\n return elementStyle.display !== 'none' &&\n parentNodeStyle.display !== 'none' &&\n elementStyle.visibility !== 'hidden'\n }\n\n return false\n}\n\nconst findShadowRoot = element => {\n if (!document.documentElement.attachShadow) {\n return null\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode()\n return root instanceof ShadowRoot ? root : null\n }\n\n if (element instanceof ShadowRoot) {\n return element\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null\n }\n\n return findShadowRoot(element.parentNode)\n}\n\nconst noop = () => function () {}\n\nconst reflow = element => element.offsetHeight\n\nconst getjQuery = () => {\n const { jQuery } = window\n\n if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n return jQuery\n }\n\n return null\n}\n\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', callback)\n } else {\n callback()\n }\n}\n\nconst isRTL = document.documentElement.dir === 'rtl'\n\nexport {\n TRANSITION_END,\n getUID,\n getSelectorFromElement,\n getElementFromSelector,\n getTransitionDurationFromElement,\n triggerTransitionEnd,\n isElement,\n emulateTransitionEnd,\n typeCheckConfig,\n isVisible,\n findShadowRoot,\n noop,\n reflow,\n getjQuery,\n onDOMContentLoaded,\n isRTL\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst mapData = (() => {\n const storeData = {}\n let id = 1\n return {\n set(element, key, data) {\n if (typeof element.bsKey === 'undefined') {\n element.bsKey = {\n key,\n id\n }\n id++\n }\n\n storeData[element.bsKey.id] = data\n },\n get(element, key) {\n if (!element || typeof element.bsKey === 'undefined') {\n return null\n }\n\n const keyProperties = element.bsKey\n if (keyProperties.key === key) {\n return storeData[keyProperties.id]\n }\n\n return null\n },\n delete(element, key) {\n if (typeof element.bsKey === 'undefined') {\n return\n }\n\n const keyProperties = element.bsKey\n if (keyProperties.key === key) {\n delete storeData[keyProperties.id]\n delete element.bsKey\n }\n }\n }\n})()\n\nconst Data = {\n setData(instance, key, data) {\n mapData.set(instance, key, data)\n },\n getData(instance, key) {\n return mapData.get(instance, key)\n },\n removeData(instance, key) {\n mapData.delete(instance, key)\n }\n}\n\nexport default Data\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery } from '../util/index'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/\nconst stripNameRegex = /\\..*/\nconst stripUidRegex = /::\\d+$/\nconst eventRegistry = {} // Events storage\nlet uidEvent = 1\nconst customEvents = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout'\n}\nconst nativeEvents = new Set([\n 'click',\n 'dblclick',\n 'mouseup',\n 'mousedown',\n 'contextmenu',\n 'mousewheel',\n 'DOMMouseScroll',\n 'mouseover',\n 'mouseout',\n 'mousemove',\n 'selectstart',\n 'selectend',\n 'keydown',\n 'keypress',\n 'keyup',\n 'orientationchange',\n 'touchstart',\n 'touchmove',\n 'touchend',\n 'touchcancel',\n 'pointerdown',\n 'pointermove',\n 'pointerup',\n 'pointerleave',\n 'pointercancel',\n 'gesturestart',\n 'gesturechange',\n 'gestureend',\n 'focus',\n 'blur',\n 'change',\n 'reset',\n 'select',\n 'submit',\n 'focusin',\n 'focusout',\n 'load',\n 'unload',\n 'beforeunload',\n 'resize',\n 'move',\n 'DOMContentLoaded',\n 'readystatechange',\n 'error',\n 'abort',\n 'scroll'\n])\n\n/**\n * ------------------------------------------------------------------------\n * Private methods\n * ------------------------------------------------------------------------\n */\n\nfunction getUidEvent(element, uid) {\n return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\n}\n\nfunction getEvent(element) {\n const uid = getUidEvent(element)\n\n element.uidEvent = uid\n eventRegistry[uid] = eventRegistry[uid] || {}\n\n return eventRegistry[uid]\n}\n\nfunction bootstrapHandler(element, fn) {\n return function handler(event) {\n event.delegateTarget = element\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, fn)\n }\n\n return fn.apply(element, [event])\n }\n}\n\nfunction bootstrapDelegationHandler(element, selector, fn) {\n return function handler(event) {\n const domElements = element.querySelectorAll(selector)\n\n for (let { target } = event; target && target !== this; target = target.parentNode) {\n for (let i = domElements.length; i--;) {\n if (domElements[i] === target) {\n event.delegateTarget = target\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, fn)\n }\n\n return fn.apply(target, [event])\n }\n }\n }\n\n // To please ESLint\n return null\n }\n}\n\nfunction findHandler(events, handler, delegationSelector = null) {\n const uidEventList = Object.keys(events)\n\n for (let i = 0, len = uidEventList.length; i < len; i++) {\n const event = events[uidEventList[i]]\n\n if (event.originalHandler === handler && event.delegationSelector === delegationSelector) {\n return event\n }\n }\n\n return null\n}\n\nfunction normalizeParams(originalTypeEvent, handler, delegationFn) {\n const delegation = typeof handler === 'string'\n const originalHandler = delegation ? delegationFn : handler\n\n // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n let typeEvent = originalTypeEvent.replace(stripNameRegex, '')\n const custom = customEvents[typeEvent]\n\n if (custom) {\n typeEvent = custom\n }\n\n const isNative = nativeEvents.has(typeEvent)\n\n if (!isNative) {\n typeEvent = originalTypeEvent\n }\n\n return [delegation, originalHandler, typeEvent]\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFn, oneOff) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n if (!handler) {\n handler = delegationFn\n delegationFn = null\n }\n\n const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn)\n const events = getEvent(element)\n const handlers = events[typeEvent] || (events[typeEvent] = {})\n const previousFn = findHandler(handlers, originalHandler, delegation ? handler : null)\n\n if (previousFn) {\n previousFn.oneOff = previousFn.oneOff && oneOff\n\n return\n }\n\n const uid = getUidEvent(originalHandler, originalTypeEvent.replace(namespaceRegex, ''))\n const fn = delegation ?\n bootstrapDelegationHandler(element, handler, delegationFn) :\n bootstrapHandler(element, handler)\n\n fn.delegationSelector = delegation ? handler : null\n fn.originalHandler = originalHandler\n fn.oneOff = oneOff\n fn.uidEvent = uid\n handlers[uid] = fn\n\n element.addEventListener(typeEvent, fn, delegation)\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n const fn = findHandler(events[typeEvent], handler, delegationSelector)\n\n if (!fn) {\n return\n }\n\n element.removeEventListener(typeEvent, fn, Boolean(delegationSelector))\n delete events[typeEvent][fn.uidEvent]\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n const storeElementEvent = events[typeEvent] || {}\n\n Object.keys(storeElementEvent).forEach(handlerKey => {\n if (handlerKey.includes(namespace)) {\n const event = storeElementEvent[handlerKey]\n\n removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector)\n }\n })\n}\n\nconst EventHandler = {\n on(element, event, handler, delegationFn) {\n addHandler(element, event, handler, delegationFn, false)\n },\n\n one(element, event, handler, delegationFn) {\n addHandler(element, event, handler, delegationFn, true)\n },\n\n off(element, originalTypeEvent, handler, delegationFn) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn)\n const inNamespace = typeEvent !== originalTypeEvent\n const events = getEvent(element)\n const isNamespace = originalTypeEvent.startsWith('.')\n\n if (typeof originalHandler !== 'undefined') {\n // Simplest case: handler is passed, remove that listener ONLY.\n if (!events || !events[typeEvent]) {\n return\n }\n\n removeHandler(element, events, typeEvent, originalHandler, delegation ? handler : null)\n return\n }\n\n if (isNamespace) {\n Object.keys(events).forEach(elementEvent => {\n removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\n })\n }\n\n const storeElementEvent = events[typeEvent] || {}\n Object.keys(storeElementEvent).forEach(keyHandlers => {\n const handlerKey = keyHandlers.replace(stripUidRegex, '')\n\n if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n const event = storeElementEvent[keyHandlers]\n\n removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector)\n }\n })\n },\n\n trigger(element, event, args) {\n if (typeof event !== 'string' || !element) {\n return null\n }\n\n const $ = getjQuery()\n const typeEvent = event.replace(stripNameRegex, '')\n const inNamespace = event !== typeEvent\n const isNative = nativeEvents.has(typeEvent)\n\n let jQueryEvent\n let bubbles = true\n let nativeDispatch = true\n let defaultPrevented = false\n let evt = null\n\n if (inNamespace && $) {\n jQueryEvent = $.Event(event, args)\n\n $(element).trigger(jQueryEvent)\n bubbles = !jQueryEvent.isPropagationStopped()\n nativeDispatch = !jQueryEvent.isImmediatePropagationStopped()\n defaultPrevented = jQueryEvent.isDefaultPrevented()\n }\n\n if (isNative) {\n evt = document.createEvent('HTMLEvents')\n evt.initEvent(typeEvent, bubbles, true)\n } else {\n evt = new CustomEvent(event, {\n bubbles,\n cancelable: true\n })\n }\n\n // merge custom information in our event\n if (typeof args !== 'undefined') {\n Object.keys(args).forEach(key => {\n Object.defineProperty(evt, key, {\n get() {\n return args[key]\n }\n })\n })\n }\n\n if (defaultPrevented) {\n evt.preventDefault()\n }\n\n if (nativeDispatch) {\n element.dispatchEvent(evt)\n }\n\n if (evt.defaultPrevented && typeof jQueryEvent !== 'undefined') {\n jQueryEvent.preventDefault()\n }\n\n return evt\n }\n}\n\nexport default EventHandler\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst VERSION = '5.0.0-beta1'\n\nclass BaseComponent {\n constructor(element) {\n if (!element) {\n return\n }\n\n this._element = element\n Data.setData(element, this.constructor.DATA_KEY, this)\n }\n\n dispose() {\n Data.removeData(this._element, this.constructor.DATA_KEY)\n this._element = null\n }\n\n /** Static */\n\n static getInstance(element) {\n return Data.getData(element, this.DATA_KEY)\n }\n\n static get VERSION() {\n return VERSION\n }\n}\n\nexport default BaseComponent\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n getjQuery,\n onDOMContentLoaded,\n TRANSITION_END,\n emulateTransitionEnd,\n getElementFromSelector,\n getTransitionDurationFromElement\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'alert'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst SELECTOR_DISMISS = '[data-bs-dismiss=\"alert\"]'\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`\nconst EVENT_CLOSED = `closed${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASSNAME_ALERT = 'alert'\nconst CLASSNAME_FADE = 'fade'\nconst CLASSNAME_SHOW = 'show'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Alert extends BaseComponent {\n // Getters\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n close(element) {\n const rootElement = element ? this._getRootElement(element) : this._element\n const customEvent = this._triggerCloseEvent(rootElement)\n\n if (customEvent === null || customEvent.defaultPrevented) {\n return\n }\n\n this._removeElement(rootElement)\n }\n\n // Private\n\n _getRootElement(element) {\n return getElementFromSelector(element) || element.closest(`.${CLASSNAME_ALERT}`)\n }\n\n _triggerCloseEvent(element) {\n return EventHandler.trigger(element, EVENT_CLOSE)\n }\n\n _removeElement(element) {\n element.classList.remove(CLASSNAME_SHOW)\n\n if (!element.classList.contains(CLASSNAME_FADE)) {\n this._destroyElement(element)\n return\n }\n\n const transitionDuration = getTransitionDurationFromElement(element)\n\n EventHandler.one(element, TRANSITION_END, () => this._destroyElement(element))\n emulateTransitionEnd(element, transitionDuration)\n }\n\n _destroyElement(element) {\n if (element.parentNode) {\n element.parentNode.removeChild(element)\n }\n\n EventHandler.trigger(element, EVENT_CLOSED)\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY)\n\n if (!data) {\n data = new Alert(this)\n }\n\n if (config === 'close') {\n data[config](this)\n }\n })\n }\n\n static handleDismiss(alertInstance) {\n return function (event) {\n if (event) {\n event.preventDefault()\n }\n\n alertInstance.close(this)\n }\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DISMISS, Alert.handleDismiss(new Alert()))\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Alert to jQuery only if jQuery is present\n */\n\nonDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Alert.jQueryInterface\n $.fn[NAME].Constructor = Alert\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Alert.jQueryInterface\n }\n }\n})\n\nexport default Alert\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery, onDOMContentLoaded } from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'button'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"button\"]'\n\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Button extends BaseComponent {\n // Getters\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n toggle() {\n // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE))\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY)\n\n if (!data) {\n data = new Button(this)\n }\n\n if (config === 'toggle') {\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, event => {\n event.preventDefault()\n\n const button = event.target.closest(SELECTOR_DATA_TOGGLE)\n\n let data = Data.getData(button, DATA_KEY)\n if (!data) {\n data = new Button(button)\n }\n\n data.toggle()\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Button to jQuery only if jQuery is present\n */\n\nonDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Button.jQueryInterface\n $.fn[NAME].Constructor = Button\n\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Button.jQueryInterface\n }\n }\n})\n\nexport default Button\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(val) {\n if (val === 'true') {\n return true\n }\n\n if (val === 'false') {\n return false\n }\n\n if (val === Number(val).toString()) {\n return Number(val)\n }\n\n if (val === '' || val === 'null') {\n return null\n }\n\n return val\n}\n\nfunction normalizeDataKey(key) {\n return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`)\n}\n\nconst Manipulator = {\n setDataAttribute(element, key, value) {\n element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value)\n },\n\n removeDataAttribute(element, key) {\n element.removeAttribute(`data-bs-${normalizeDataKey(key)}`)\n },\n\n getDataAttributes(element) {\n if (!element) {\n return {}\n }\n\n const attributes = {}\n\n Object.keys(element.dataset)\n .filter(key => key.startsWith('bs'))\n .forEach(key => {\n let pureKey = key.replace(/^bs/, '')\n pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length)\n attributes[pureKey] = normalizeData(element.dataset[key])\n })\n\n return attributes\n },\n\n getDataAttribute(element, key) {\n return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`))\n },\n\n offset(element) {\n const rect = element.getBoundingClientRect()\n\n return {\n top: rect.top + document.body.scrollTop,\n left: rect.left + document.body.scrollLeft\n }\n },\n\n position(element) {\n return {\n top: element.offsetTop,\n left: element.offsetLeft\n }\n }\n}\n\nexport default Manipulator\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NODE_TEXT = 3\n\nconst SelectorEngine = {\n matches(element, selector) {\n return element.matches(selector)\n },\n\n find(selector, element = document.documentElement) {\n return [].concat(...Element.prototype.querySelectorAll.call(element, selector))\n },\n\n findOne(selector, element = document.documentElement) {\n return Element.prototype.querySelector.call(element, selector)\n },\n\n children(element, selector) {\n const children = [].concat(...element.children)\n\n return children.filter(child => child.matches(selector))\n },\n\n parents(element, selector) {\n const parents = []\n\n let ancestor = element.parentNode\n\n while (ancestor && ancestor.nodeType === Node.ELEMENT_NODE && ancestor.nodeType !== NODE_TEXT) {\n if (this.matches(ancestor, selector)) {\n parents.push(ancestor)\n }\n\n ancestor = ancestor.parentNode\n }\n\n return parents\n },\n\n prev(element, selector) {\n let previous = element.previousElementSibling\n\n while (previous) {\n if (previous.matches(selector)) {\n return [previous]\n }\n\n previous = previous.previousElementSibling\n }\n\n return []\n },\n\n next(element, selector) {\n let next = element.nextElementSibling\n\n while (next) {\n if (this.matches(next, selector)) {\n return [next]\n }\n\n next = next.nextElementSibling\n }\n\n return []\n }\n}\n\nexport default SelectorEngine\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n getjQuery,\n onDOMContentLoaded,\n TRANSITION_END,\n emulateTransitionEnd,\n getElementFromSelector,\n getTransitionDurationFromElement,\n isVisible,\n reflow,\n triggerTransitionEnd,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'carousel'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n interval: 5000,\n keyboard: true,\n slide: false,\n pause: 'hover',\n wrap: true,\n touch: true\n}\n\nconst DefaultType = {\n interval: '(number|boolean)',\n keyboard: 'boolean',\n slide: '(boolean|string)',\n pause: '(string|boolean)',\n wrap: 'boolean',\n touch: 'boolean'\n}\n\nconst DIRECTION_NEXT = 'next'\nconst DIRECTION_PREV = 'prev'\nconst DIRECTION_LEFT = 'left'\nconst DIRECTION_RIGHT = 'right'\n\nconst EVENT_SLIDE = `slide${EVENT_KEY}`\nconst EVENT_SLID = `slid${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY}`\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_CAROUSEL = 'carousel'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_SLIDE = 'slide'\nconst CLASS_NAME_END = 'carousel-item-end'\nconst CLASS_NAME_START = 'carousel-item-start'\nconst CLASS_NAME_NEXT = 'carousel-item-next'\nconst CLASS_NAME_PREV = 'carousel-item-prev'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\n\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ACTIVE_ITEM = '.active.carousel-item'\nconst SELECTOR_ITEM = '.carousel-item'\nconst SELECTOR_ITEM_IMG = '.carousel-item img'\nconst SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]'\n\nconst PointerType = {\n TOUCH: 'touch',\n PEN: 'pen'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\nclass Carousel extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._items = null\n this._interval = null\n this._activeElement = null\n this._isPaused = false\n this._isSliding = false\n this.touchTimeout = null\n this.touchStartX = 0\n this.touchDeltaX = 0\n\n this._config = this._getConfig(config)\n this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n this._pointerEvent = Boolean(window.PointerEvent)\n\n this._addEventListeners()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n next() {\n if (!this._isSliding) {\n this._slide(DIRECTION_NEXT)\n }\n }\n\n nextWhenVisible() {\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden && isVisible(this._element)) {\n this.next()\n }\n }\n\n prev() {\n if (!this._isSliding) {\n this._slide(DIRECTION_PREV)\n }\n }\n\n pause(event) {\n if (!event) {\n this._isPaused = true\n }\n\n if (SelectorEngine.findOne(SELECTOR_NEXT_PREV, this._element)) {\n triggerTransitionEnd(this._element)\n this.cycle(true)\n }\n\n clearInterval(this._interval)\n this._interval = null\n }\n\n cycle(event) {\n if (!event) {\n this._isPaused = false\n }\n\n if (this._interval) {\n clearInterval(this._interval)\n this._interval = null\n }\n\n if (this._config && this._config.interval && !this._isPaused) {\n this._updateInterval()\n\n this._interval = setInterval(\n (document.visibilityState ? this.nextWhenVisible : this.next).bind(this),\n this._config.interval\n )\n }\n }\n\n to(index) {\n this._activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n const activeIndex = this._getItemIndex(this._activeElement)\n\n if (index > this._items.length - 1 || index < 0) {\n return\n }\n\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.to(index))\n return\n }\n\n if (activeIndex === index) {\n this.pause()\n this.cycle()\n return\n }\n\n const direction = index > activeIndex ?\n DIRECTION_NEXT :\n DIRECTION_PREV\n\n this._slide(direction, this._items[index])\n }\n\n dispose() {\n super.dispose()\n EventHandler.off(this._element, EVENT_KEY)\n\n this._items = null\n this._config = null\n this._interval = null\n this._isPaused = null\n this._isSliding = null\n this._activeElement = null\n this._indicatorsElement = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _handleSwipe() {\n const absDeltax = Math.abs(this.touchDeltaX)\n\n if (absDeltax <= SWIPE_THRESHOLD) {\n return\n }\n\n const direction = absDeltax / this.touchDeltaX\n\n this.touchDeltaX = 0\n\n // swipe left\n if (direction > 0) {\n this.prev()\n }\n\n // swipe right\n if (direction < 0) {\n this.next()\n }\n }\n\n _addEventListeners() {\n if (this._config.keyboard) {\n EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n }\n\n if (this._config.pause === 'hover') {\n EventHandler.on(this._element, EVENT_MOUSEENTER, event => this.pause(event))\n EventHandler.on(this._element, EVENT_MOUSELEAVE, event => this.cycle(event))\n }\n\n if (this._config.touch && this._touchSupported) {\n this._addTouchEventListeners()\n }\n }\n\n _addTouchEventListeners() {\n const start = event => {\n if (this._pointerEvent && PointerType[event.pointerType.toUpperCase()]) {\n this.touchStartX = event.clientX\n } else if (!this._pointerEvent) {\n this.touchStartX = event.touches[0].clientX\n }\n }\n\n const move = event => {\n // ensure swiping with one touch and not pinching\n if (event.touches && event.touches.length > 1) {\n this.touchDeltaX = 0\n } else {\n this.touchDeltaX = event.touches[0].clientX - this.touchStartX\n }\n }\n\n const end = event => {\n if (this._pointerEvent && PointerType[event.pointerType.toUpperCase()]) {\n this.touchDeltaX = event.clientX - this.touchStartX\n }\n\n this._handleSwipe()\n if (this._config.pause === 'hover') {\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n\n this.pause()\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout)\n }\n\n this.touchTimeout = setTimeout(event => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n }\n }\n\n SelectorEngine.find(SELECTOR_ITEM_IMG, this._element).forEach(itemImg => {\n EventHandler.on(itemImg, EVENT_DRAG_START, e => e.preventDefault())\n })\n\n if (this._pointerEvent) {\n EventHandler.on(this._element, EVENT_POINTERDOWN, event => start(event))\n EventHandler.on(this._element, EVENT_POINTERUP, event => end(event))\n\n this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n } else {\n EventHandler.on(this._element, EVENT_TOUCHSTART, event => start(event))\n EventHandler.on(this._element, EVENT_TOUCHMOVE, event => move(event))\n EventHandler.on(this._element, EVENT_TOUCHEND, event => end(event))\n }\n }\n\n _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return\n }\n\n switch (event.key) {\n case ARROW_LEFT_KEY:\n event.preventDefault()\n this.prev()\n break\n case ARROW_RIGHT_KEY:\n event.preventDefault()\n this.next()\n break\n default:\n }\n }\n\n _getItemIndex(element) {\n this._items = element && element.parentNode ?\n SelectorEngine.find(SELECTOR_ITEM, element.parentNode) :\n []\n\n return this._items.indexOf(element)\n }\n\n _getItemByDirection(direction, activeElement) {\n const isNextDirection = direction === DIRECTION_NEXT\n const isPrevDirection = direction === DIRECTION_PREV\n const activeIndex = this._getItemIndex(activeElement)\n const lastItemIndex = this._items.length - 1\n const isGoingToWrap = (isPrevDirection && activeIndex === 0) ||\n (isNextDirection && activeIndex === lastItemIndex)\n\n if (isGoingToWrap && !this._config.wrap) {\n return activeElement\n }\n\n const delta = direction === DIRECTION_PREV ? -1 : 1\n const itemIndex = (activeIndex + delta) % this._items.length\n\n return itemIndex === -1 ?\n this._items[this._items.length - 1] :\n this._items[itemIndex]\n }\n\n _triggerSlideEvent(relatedTarget, eventDirectionName) {\n const targetIndex = this._getItemIndex(relatedTarget)\n const fromIndex = this._getItemIndex(SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element))\n\n return EventHandler.trigger(this._element, EVENT_SLIDE, {\n relatedTarget,\n direction: eventDirectionName,\n from: fromIndex,\n to: targetIndex\n })\n }\n\n _setActiveIndicatorElement(element) {\n if (this._indicatorsElement) {\n const indicators = SelectorEngine.find(SELECTOR_ACTIVE, this._indicatorsElement)\n\n for (let i = 0; i < indicators.length; i++) {\n indicators[i].classList.remove(CLASS_NAME_ACTIVE)\n }\n\n const nextIndicator = this._indicatorsElement.children[\n this._getItemIndex(element)\n ]\n\n if (nextIndicator) {\n nextIndicator.classList.add(CLASS_NAME_ACTIVE)\n }\n }\n }\n\n _updateInterval() {\n const element = this._activeElement || SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n\n if (!element) {\n return\n }\n\n const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10)\n\n if (elementInterval) {\n this._config.defaultInterval = this._config.defaultInterval || this._config.interval\n this._config.interval = elementInterval\n } else {\n this._config.interval = this._config.defaultInterval || this._config.interval\n }\n }\n\n _slide(direction, element) {\n const activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n const activeElementIndex = this._getItemIndex(activeElement)\n const nextElement = element || (activeElement && this._getItemByDirection(direction, activeElement))\n\n const nextElementIndex = this._getItemIndex(nextElement)\n const isCycling = Boolean(this._interval)\n\n let directionalClassName\n let orderClassName\n let eventDirectionName\n\n if (direction === DIRECTION_NEXT) {\n directionalClassName = CLASS_NAME_START\n orderClassName = CLASS_NAME_NEXT\n eventDirectionName = DIRECTION_LEFT\n } else {\n directionalClassName = CLASS_NAME_END\n orderClassName = CLASS_NAME_PREV\n eventDirectionName = DIRECTION_RIGHT\n }\n\n if (nextElement && nextElement.classList.contains(CLASS_NAME_ACTIVE)) {\n this._isSliding = false\n return\n }\n\n const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName)\n if (slideEvent.defaultPrevented) {\n return\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n return\n }\n\n this._isSliding = true\n\n if (isCycling) {\n this.pause()\n }\n\n this._setActiveIndicatorElement(nextElement)\n this._activeElement = nextElement\n\n if (this._element.classList.contains(CLASS_NAME_SLIDE)) {\n nextElement.classList.add(orderClassName)\n\n reflow(nextElement)\n\n activeElement.classList.add(directionalClassName)\n nextElement.classList.add(directionalClassName)\n\n const transitionDuration = getTransitionDurationFromElement(activeElement)\n\n EventHandler.one(activeElement, TRANSITION_END, () => {\n nextElement.classList.remove(directionalClassName, orderClassName)\n nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n activeElement.classList.remove(CLASS_NAME_ACTIVE, orderClassName, directionalClassName)\n\n this._isSliding = false\n\n setTimeout(() => {\n EventHandler.trigger(this._element, EVENT_SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n })\n }, 0)\n })\n\n emulateTransitionEnd(activeElement, transitionDuration)\n } else {\n activeElement.classList.remove(CLASS_NAME_ACTIVE)\n nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n this._isSliding = false\n EventHandler.trigger(this._element, EVENT_SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n })\n }\n\n if (isCycling) {\n this.cycle()\n }\n }\n\n // Static\n\n static carouselInterface(element, config) {\n let data = Data.getData(element, DATA_KEY)\n let _config = {\n ...Default,\n ...Manipulator.getDataAttributes(element)\n }\n\n if (typeof config === 'object') {\n _config = {\n ..._config,\n ...config\n }\n }\n\n const action = typeof config === 'string' ? config : _config.slide\n\n if (!data) {\n data = new Carousel(element, _config)\n }\n\n if (typeof config === 'number') {\n data.to(config)\n } else if (typeof action === 'string') {\n if (typeof data[action] === 'undefined') {\n throw new TypeError(`No method named \"${action}\"`)\n }\n\n data[action]()\n } else if (_config.interval && _config.ride) {\n data.pause()\n data.cycle()\n }\n }\n\n static jQueryInterface(config) {\n return this.each(function () {\n Carousel.carouselInterface(this, config)\n })\n }\n\n static dataApiClickHandler(event) {\n const target = getElementFromSelector(this)\n\n if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n return\n }\n\n const config = {\n ...Manipulator.getDataAttributes(target),\n ...Manipulator.getDataAttributes(this)\n }\n const slideIndex = this.getAttribute('data-bs-slide-to')\n\n if (slideIndex) {\n config.interval = false\n }\n\n Carousel.carouselInterface(target, config)\n\n if (slideIndex) {\n Data.getData(target, DATA_KEY).to(slideIndex)\n }\n\n event.preventDefault()\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, Carousel.dataApiClickHandler)\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE)\n\n for (let i = 0, len = carousels.length; i < len; i++) {\n Carousel.carouselInterface(carousels[i], Data.getData(carousels[i], DATA_KEY))\n }\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Carousel to jQuery only if jQuery is present\n */\n\nonDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Carousel.jQueryInterface\n $.fn[NAME].Constructor = Carousel\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Carousel.jQueryInterface\n }\n }\n})\n\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n getjQuery,\n onDOMContentLoaded,\n TRANSITION_END,\n emulateTransitionEnd,\n getSelectorFromElement,\n getElementFromSelector,\n getTransitionDurationFromElement,\n isElement,\n reflow,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'collapse'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst Default = {\n toggle: true,\n parent: ''\n}\n\nconst DefaultType = {\n toggle: 'boolean',\n parent: '(string|element)'\n}\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_COLLAPSE = 'collapse'\nconst CLASS_NAME_COLLAPSING = 'collapsing'\nconst CLASS_NAME_COLLAPSED = 'collapsed'\n\nconst WIDTH = 'width'\nconst HEIGHT = 'height'\n\nconst SELECTOR_ACTIVES = '.show, .collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"collapse\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Collapse extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._isTransitioning = false\n this._config = this._getConfig(config)\n this._triggerArray = SelectorEngine.find(\n `${SELECTOR_DATA_TOGGLE}[href=\"#${element.id}\"],` +\n `${SELECTOR_DATA_TOGGLE}[data-bs-target=\"#${element.id}\"]`\n )\n\n const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n for (let i = 0, len = toggleList.length; i < len; i++) {\n const elem = toggleList[i]\n const selector = getSelectorFromElement(elem)\n const filterElement = SelectorEngine.find(selector)\n .filter(foundElem => foundElem === element)\n\n if (selector !== null && filterElement.length) {\n this._selector = selector\n this._triggerArray.push(elem)\n }\n }\n\n this._parent = this._config.parent ? this._getParent() : null\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._element, this._triggerArray)\n }\n\n if (this._config.toggle) {\n this.toggle()\n }\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n toggle() {\n if (this._element.classList.contains(CLASS_NAME_SHOW)) {\n this.hide()\n } else {\n this.show()\n }\n }\n\n show() {\n if (this._isTransitioning || this._element.classList.contains(CLASS_NAME_SHOW)) {\n return\n }\n\n let actives\n let activesData\n\n if (this._parent) {\n actives = SelectorEngine.find(SELECTOR_ACTIVES, this._parent)\n .filter(elem => {\n if (typeof this._config.parent === 'string') {\n return elem.getAttribute('data-bs-parent') === this._config.parent\n }\n\n return elem.classList.contains(CLASS_NAME_COLLAPSE)\n })\n\n if (actives.length === 0) {\n actives = null\n }\n }\n\n const container = SelectorEngine.findOne(this._selector)\n if (actives) {\n const tempActiveData = actives.find(elem => container !== elem)\n activesData = tempActiveData ? Data.getData(tempActiveData, DATA_KEY) : null\n\n if (activesData && activesData._isTransitioning) {\n return\n }\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n if (startEvent.defaultPrevented) {\n return\n }\n\n if (actives) {\n actives.forEach(elemActive => {\n if (container !== elemActive) {\n Collapse.collapseInterface(elemActive, 'hide')\n }\n\n if (!activesData) {\n Data.setData(elemActive, DATA_KEY, null)\n }\n })\n }\n\n const dimension = this._getDimension()\n\n this._element.classList.remove(CLASS_NAME_COLLAPSE)\n this._element.classList.add(CLASS_NAME_COLLAPSING)\n\n this._element.style[dimension] = 0\n\n if (this._triggerArray.length) {\n this._triggerArray.forEach(element => {\n element.classList.remove(CLASS_NAME_COLLAPSED)\n element.setAttribute('aria-expanded', true)\n })\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n this._element.classList.remove(CLASS_NAME_COLLAPSING)\n this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n this._element.style[dimension] = ''\n\n this.setTransitioning(false)\n\n EventHandler.trigger(this._element, EVENT_SHOWN)\n }\n\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n const scrollSize = `scroll${capitalizedDimension}`\n const transitionDuration = getTransitionDurationFromElement(this._element)\n\n EventHandler.one(this._element, TRANSITION_END, complete)\n\n emulateTransitionEnd(this._element, transitionDuration)\n this._element.style[dimension] = `${this._element[scrollSize]}px`\n }\n\n hide() {\n if (this._isTransitioning || !this._element.classList.contains(CLASS_NAME_SHOW)) {\n return\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n if (startEvent.defaultPrevented) {\n return\n }\n\n const dimension = this._getDimension()\n\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n reflow(this._element)\n\n this._element.classList.add(CLASS_NAME_COLLAPSING)\n this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n const triggerArrayLength = this._triggerArray.length\n if (triggerArrayLength > 0) {\n for (let i = 0; i < triggerArrayLength; i++) {\n const trigger = this._triggerArray[i]\n const elem = getElementFromSelector(trigger)\n\n if (elem && !elem.classList.contains(CLASS_NAME_SHOW)) {\n trigger.classList.add(CLASS_NAME_COLLAPSED)\n trigger.setAttribute('aria-expanded', false)\n }\n }\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n this.setTransitioning(false)\n this._element.classList.remove(CLASS_NAME_COLLAPSING)\n this._element.classList.add(CLASS_NAME_COLLAPSE)\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n this._element.style[dimension] = ''\n const transitionDuration = getTransitionDurationFromElement(this._element)\n\n EventHandler.one(this._element, TRANSITION_END, complete)\n emulateTransitionEnd(this._element, transitionDuration)\n }\n\n setTransitioning(isTransitioning) {\n this._isTransitioning = isTransitioning\n }\n\n dispose() {\n super.dispose()\n this._config = null\n this._parent = null\n this._triggerArray = null\n this._isTransitioning = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n config.toggle = Boolean(config.toggle) // Coerce string values\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _getDimension() {\n return this._element.classList.contains(WIDTH) ? WIDTH : HEIGHT\n }\n\n _getParent() {\n let { parent } = this._config\n\n if (isElement(parent)) {\n // it's a jQuery object\n if (typeof parent.jquery !== 'undefined' || typeof parent[0] !== 'undefined') {\n parent = parent[0]\n }\n } else {\n parent = SelectorEngine.findOne(parent)\n }\n\n const selector = `${SELECTOR_DATA_TOGGLE}[data-bs-parent=\"${parent}\"]`\n\n SelectorEngine.find(selector, parent)\n .forEach(element => {\n const selected = getElementFromSelector(element)\n\n this._addAriaAndCollapsedClass(\n selected,\n [element]\n )\n })\n\n return parent\n }\n\n _addAriaAndCollapsedClass(element, triggerArray) {\n if (!element || !triggerArray.length) {\n return\n }\n\n const isOpen = element.classList.contains(CLASS_NAME_SHOW)\n\n triggerArray.forEach(elem => {\n if (isOpen) {\n elem.classList.remove(CLASS_NAME_COLLAPSED)\n } else {\n elem.classList.add(CLASS_NAME_COLLAPSED)\n }\n\n elem.setAttribute('aria-expanded', isOpen)\n })\n }\n\n // Static\n\n static collapseInterface(element, config) {\n let data = Data.getData(element, DATA_KEY)\n const _config = {\n ...Default,\n ...Manipulator.getDataAttributes(element),\n ...(typeof config === 'object' && config ? config : {})\n }\n\n if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false\n }\n\n if (!data) {\n data = new Collapse(element, _config)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n }\n\n static jQueryInterface(config) {\n return this.each(function () {\n Collapse.collapseInterface(this, config)\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n // preventDefault only for elements (which change the URL) not inside the collapsible element\n if (event.target.tagName === 'A') {\n event.preventDefault()\n }\n\n const triggerData = Manipulator.getDataAttributes(this)\n const selector = getSelectorFromElement(this)\n const selectorElements = SelectorEngine.find(selector)\n\n selectorElements.forEach(element => {\n const data = Data.getData(element, DATA_KEY)\n let config\n if (data) {\n // update parent attribute\n if (data._parent === null && typeof triggerData.parent === 'string') {\n data._config.parent = triggerData.parent\n data._parent = data._getParent()\n }\n\n config = 'toggle'\n } else {\n config = triggerData\n }\n\n Collapse.collapseInterface(element, config)\n })\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Collapse to jQuery only if jQuery is present\n */\n\nonDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Collapse.jQueryInterface\n $.fn[NAME].Constructor = Collapse\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Collapse.jQueryInterface\n }\n }\n})\n\nexport default Collapse\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\n\nimport {\n getjQuery,\n onDOMContentLoaded,\n getElementFromSelector,\n isElement,\n isVisible,\n isRTL,\n noop,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'dropdown'\nconst DATA_KEY = 'bs.dropdown'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst SPACE_KEY = 'Space'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst RIGHT_MOUSE_BUTTON = 2 // MouseEvent.button value for the secondary button, usually the right button\n\nconst REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEY}|${ARROW_DOWN_KEY}|${ESCAPE_KEY}`)\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK = `click${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DISABLED = 'disabled'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_DROPUP = 'dropup'\nconst CLASS_NAME_DROPEND = 'dropend'\nconst CLASS_NAME_DROPSTART = 'dropstart'\nconst CLASS_NAME_NAVBAR = 'navbar'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dropdown\"]'\nconst SELECTOR_FORM_CHILD = '.dropdown form'\nconst SELECTOR_MENU = '.dropdown-menu'\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav'\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n\nconst PLACEMENT_TOP = isRTL ? 'top-end' : 'top-start'\nconst PLACEMENT_TOPEND = isRTL ? 'top-start' : 'top-end'\nconst PLACEMENT_BOTTOM = isRTL ? 'bottom-end' : 'bottom-start'\nconst PLACEMENT_BOTTOMEND = isRTL ? 'bottom-start' : 'bottom-end'\nconst PLACEMENT_RIGHT = isRTL ? 'left-start' : 'right-start'\nconst PLACEMENT_LEFT = isRTL ? 'right-start' : 'left-start'\n\nconst Default = {\n offset: 0,\n flip: true,\n boundary: 'clippingParents',\n reference: 'toggle',\n display: 'dynamic',\n popperConfig: null\n}\n\nconst DefaultType = {\n offset: '(number|string|function)',\n flip: 'boolean',\n boundary: '(string|element)',\n reference: '(string|element)',\n display: 'string',\n popperConfig: '(null|object)'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Dropdown extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._popper = null\n this._config = this._getConfig(config)\n this._menu = this._getMenuElement()\n this._inNavbar = this._detectNavbar()\n\n this._addEventListeners()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n toggle() {\n if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED)) {\n return\n }\n\n const isActive = this._element.classList.contains(CLASS_NAME_SHOW)\n\n Dropdown.clearMenus()\n\n if (isActive) {\n return\n }\n\n this.show()\n }\n\n show() {\n if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED) || this._menu.classList.contains(CLASS_NAME_SHOW)) {\n return\n }\n\n const parent = Dropdown.getParentFromElement(this._element)\n const relatedTarget = {\n relatedTarget: this._element\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, relatedTarget)\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n // Totally disable Popper for Dropdowns in Navbar\n if (!this._inNavbar) {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)')\n }\n\n let referenceElement = this._element\n\n if (this._config.reference === 'parent') {\n referenceElement = parent\n } else if (isElement(this._config.reference)) {\n referenceElement = this._config.reference\n\n // Check if it's jQuery element\n if (typeof this._config.reference.jquery !== 'undefined') {\n referenceElement = this._config.reference[0]\n }\n }\n\n this._popper = Popper.createPopper(referenceElement, this._menu, this._getPopperConfig())\n }\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement &&\n !parent.closest(SELECTOR_NAVBAR_NAV)) {\n [].concat(...document.body.children)\n .forEach(elem => EventHandler.on(elem, 'mouseover', null, noop()))\n }\n\n this._element.focus()\n this._element.setAttribute('aria-expanded', true)\n\n this._menu.classList.toggle(CLASS_NAME_SHOW)\n this._element.classList.toggle(CLASS_NAME_SHOW)\n EventHandler.trigger(parent, EVENT_SHOWN, relatedTarget)\n }\n\n hide() {\n if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED) || !this._menu.classList.contains(CLASS_NAME_SHOW)) {\n return\n }\n\n const parent = Dropdown.getParentFromElement(this._element)\n const relatedTarget = {\n relatedTarget: this._element\n }\n\n const hideEvent = EventHandler.trigger(parent, EVENT_HIDE, relatedTarget)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n if (this._popper) {\n this._popper.destroy()\n }\n\n this._menu.classList.toggle(CLASS_NAME_SHOW)\n this._element.classList.toggle(CLASS_NAME_SHOW)\n EventHandler.trigger(parent, EVENT_HIDDEN, relatedTarget)\n }\n\n dispose() {\n super.dispose()\n EventHandler.off(this._element, EVENT_KEY)\n this._menu = null\n\n if (this._popper) {\n this._popper.destroy()\n this._popper = null\n }\n }\n\n update() {\n this._inNavbar = this._detectNavbar()\n if (this._popper) {\n this._popper.update()\n }\n }\n\n // Private\n\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_CLICK, event => {\n event.preventDefault()\n event.stopPropagation()\n this.toggle()\n })\n }\n\n _getConfig(config) {\n config = {\n ...this.constructor.Default,\n ...Manipulator.getDataAttributes(this._element),\n ...config\n }\n\n typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n return config\n }\n\n _getMenuElement() {\n return SelectorEngine.next(this._element, SELECTOR_MENU)[0]\n }\n\n _getPlacement() {\n const parentDropdown = this._element.parentNode\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {\n return PLACEMENT_RIGHT\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {\n return PLACEMENT_LEFT\n }\n\n // We need to trim the value because custom properties can also include spaces\n const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end'\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {\n return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP\n }\n\n return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM\n }\n\n _detectNavbar() {\n return this._element.closest(`.${CLASS_NAME_NAVBAR}`) !== null\n }\n\n _getPopperConfig() {\n const popperConfig = {\n placement: this._getPlacement(),\n modifiers: [{\n name: 'preventOverflow',\n options: {\n altBoundary: this._config.flip,\n rootBoundary: this._config.boundary\n }\n }]\n }\n\n // Disable Popper if we have a static display\n if (this._config.display === 'static') {\n popperConfig.modifiers = [{\n name: 'applyStyles',\n enabled: false\n }]\n }\n\n return {\n ...popperConfig,\n ...this._config.popperConfig\n }\n }\n\n // Static\n\n static dropdownInterface(element, config) {\n let data = Data.getData(element, DATA_KEY)\n const _config = typeof config === 'object' ? config : null\n\n if (!data) {\n data = new Dropdown(element, _config)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n }\n\n static jQueryInterface(config) {\n return this.each(function () {\n Dropdown.dropdownInterface(this, config)\n })\n }\n\n static clearMenus(event) {\n if (event && (event.button === RIGHT_MOUSE_BUTTON || (event.type === 'keyup' && event.key !== TAB_KEY))) {\n return\n }\n\n const toggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n for (let i = 0, len = toggles.length; i < len; i++) {\n const parent = Dropdown.getParentFromElement(toggles[i])\n const context = Data.getData(toggles[i], DATA_KEY)\n const relatedTarget = {\n relatedTarget: toggles[i]\n }\n\n if (event && event.type === 'click') {\n relatedTarget.clickEvent = event\n }\n\n if (!context) {\n continue\n }\n\n const dropdownMenu = context._menu\n if (!toggles[i].classList.contains(CLASS_NAME_SHOW)) {\n continue\n }\n\n if (event && ((event.type === 'click' &&\n /input|textarea/i.test(event.target.tagName)) ||\n (event.type === 'keyup' && event.key === TAB_KEY)) &&\n dropdownMenu.contains(event.target)) {\n continue\n }\n\n const hideEvent = EventHandler.trigger(parent, EVENT_HIDE, relatedTarget)\n if (hideEvent.defaultPrevented) {\n continue\n }\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n [].concat(...document.body.children)\n .forEach(elem => EventHandler.off(elem, 'mouseover', null, noop()))\n }\n\n toggles[i].setAttribute('aria-expanded', 'false')\n\n if (context._popper) {\n context._popper.destroy()\n }\n\n dropdownMenu.classList.remove(CLASS_NAME_SHOW)\n toggles[i].classList.remove(CLASS_NAME_SHOW)\n EventHandler.trigger(parent, EVENT_HIDDEN, relatedTarget)\n }\n }\n\n static getParentFromElement(element) {\n return getElementFromSelector(element) || element.parentNode\n }\n\n static dataApiKeydownHandler(event) {\n // If not input/textarea:\n // - And not a key in REGEXP_KEYDOWN => not a dropdown command\n // If input/textarea:\n // - If space key => not a dropdown command\n // - If key is other than escape\n // - If key is not up or down => not a dropdown command\n // - If trigger inside the menu => not a dropdown command\n if (/input|textarea/i.test(event.target.tagName) ?\n event.key === SPACE_KEY || (event.key !== ESCAPE_KEY &&\n ((event.key !== ARROW_DOWN_KEY && event.key !== ARROW_UP_KEY) ||\n event.target.closest(SELECTOR_MENU))) :\n !REGEXP_KEYDOWN.test(event.key)) {\n return\n }\n\n event.preventDefault()\n event.stopPropagation()\n\n if (this.disabled || this.classList.contains(CLASS_NAME_DISABLED)) {\n return\n }\n\n const parent = Dropdown.getParentFromElement(this)\n const isActive = this.classList.contains(CLASS_NAME_SHOW)\n\n if (event.key === ESCAPE_KEY) {\n const button = this.matches(SELECTOR_DATA_TOGGLE) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0]\n button.focus()\n Dropdown.clearMenus()\n return\n }\n\n if (!isActive || event.key === SPACE_KEY) {\n Dropdown.clearMenus()\n return\n }\n\n const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, parent).filter(isVisible)\n\n if (!items.length) {\n return\n }\n\n let index = items.indexOf(event.target)\n\n // Up\n if (event.key === ARROW_UP_KEY && index > 0) {\n index--\n }\n\n // Down\n if (event.key === ARROW_DOWN_KEY && index < items.length - 1) {\n index++\n }\n\n // index is -1 if the first keydown is an ArrowUp\n index = index === -1 ? 0 : index\n\n items[index].focus()\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_CLICK_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n event.preventDefault()\n event.stopPropagation()\n Dropdown.dropdownInterface(this, 'toggle')\n})\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_FORM_CHILD, e => e.stopPropagation())\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Dropdown to jQuery only if jQuery is present\n */\n\nonDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Dropdown.jQueryInterface\n $.fn[NAME].Constructor = Dropdown\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Dropdown.jQueryInterface\n }\n }\n})\n\nexport default Dropdown\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n getjQuery,\n onDOMContentLoaded,\n TRANSITION_END,\n emulateTransitionEnd,\n getElementFromSelector,\n getTransitionDurationFromElement,\n isVisible,\n isRTL,\n reflow,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'modal'\nconst DATA_KEY = 'bs.modal'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst ESCAPE_KEY = 'Escape'\n\nconst Default = {\n backdrop: true,\n keyboard: true,\n focus: true\n}\n\nconst DefaultType = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n focus: 'boolean'\n}\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEUP_DISMISS = `mouseup.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SCROLLBAR_MEASURER = 'modal-scrollbar-measure'\nconst CLASS_NAME_BACKDROP = 'modal-backdrop'\nconst CLASS_NAME_OPEN = 'modal-open'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_STATIC = 'modal-static'\n\nconst SELECTOR_DIALOG = '.modal-dialog'\nconst SELECTOR_MODAL_BODY = '.modal-body'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"modal\"]'\nconst SELECTOR_DATA_DISMISS = '[data-bs-dismiss=\"modal\"]'\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Modal extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._config = this._getConfig(config)\n this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, element)\n this._backdrop = null\n this._isShown = false\n this._isBodyOverflowing = false\n this._ignoreBackdropClick = false\n this._isTransitioning = false\n this._scrollbarWidth = 0\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget)\n }\n\n show(relatedTarget) {\n if (this._isShown || this._isTransitioning) {\n return\n }\n\n if (this._element.classList.contains(CLASS_NAME_FADE)) {\n this._isTransitioning = true\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n relatedTarget\n })\n\n if (this._isShown || showEvent.defaultPrevented) {\n return\n }\n\n this._isShown = true\n\n this._checkScrollbar()\n this._setScrollbar()\n\n this._adjustDialog()\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n EventHandler.on(this._element, EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, event => this.hide(event))\n\n EventHandler.on(this._dialog, EVENT_MOUSEDOWN_DISMISS, () => {\n EventHandler.one(this._element, EVENT_MOUSEUP_DISMISS, event => {\n if (event.target === this._element) {\n this._ignoreBackdropClick = true\n }\n })\n })\n\n this._showBackdrop(() => this._showElement(relatedTarget))\n }\n\n hide(event) {\n if (event) {\n event.preventDefault()\n }\n\n if (!this._isShown || this._isTransitioning) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n this._isShown = false\n const transition = this._element.classList.contains(CLASS_NAME_FADE)\n\n if (transition) {\n this._isTransitioning = true\n }\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n EventHandler.off(document, EVENT_FOCUSIN)\n\n this._element.classList.remove(CLASS_NAME_SHOW)\n\n EventHandler.off(this._element, EVENT_CLICK_DISMISS)\n EventHandler.off(this._dialog, EVENT_MOUSEDOWN_DISMISS)\n\n if (transition) {\n const transitionDuration = getTransitionDurationFromElement(this._element)\n\n EventHandler.one(this._element, TRANSITION_END, event => this._hideModal(event))\n emulateTransitionEnd(this._element, transitionDuration)\n } else {\n this._hideModal()\n }\n }\n\n dispose() {\n [window, this._element, this._dialog]\n .forEach(htmlElement => EventHandler.off(htmlElement, EVENT_KEY))\n\n super.dispose()\n\n /**\n * `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API`\n * Do not move `document` in `htmlElements` array\n * It will remove `EVENT_CLICK_DATA_API` event that should remain\n */\n EventHandler.off(document, EVENT_FOCUSIN)\n\n this._config = null\n this._dialog = null\n this._backdrop = null\n this._isShown = null\n this._isBodyOverflowing = null\n this._ignoreBackdropClick = null\n this._isTransitioning = null\n this._scrollbarWidth = null\n }\n\n handleUpdate() {\n this._adjustDialog()\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _showElement(relatedTarget) {\n const transition = this._element.classList.contains(CLASS_NAME_FADE)\n const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog)\n\n if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n // Don't move modal's DOM position\n document.body.appendChild(this._element)\n }\n\n this._element.style.display = 'block'\n this._element.removeAttribute('aria-hidden')\n this._element.setAttribute('aria-modal', true)\n this._element.setAttribute('role', 'dialog')\n this._element.scrollTop = 0\n\n if (modalBody) {\n modalBody.scrollTop = 0\n }\n\n if (transition) {\n reflow(this._element)\n }\n\n this._element.classList.add(CLASS_NAME_SHOW)\n\n if (this._config.focus) {\n this._enforceFocus()\n }\n\n const transitionComplete = () => {\n if (this._config.focus) {\n this._element.focus()\n }\n\n this._isTransitioning = false\n EventHandler.trigger(this._element, EVENT_SHOWN, {\n relatedTarget\n })\n }\n\n if (transition) {\n const transitionDuration = getTransitionDurationFromElement(this._dialog)\n\n EventHandler.one(this._dialog, TRANSITION_END, transitionComplete)\n emulateTransitionEnd(this._dialog, transitionDuration)\n } else {\n transitionComplete()\n }\n }\n\n _enforceFocus() {\n EventHandler.off(document, EVENT_FOCUSIN) // guard against infinite focus loop\n EventHandler.on(document, EVENT_FOCUSIN, event => {\n if (document !== event.target &&\n this._element !== event.target &&\n !this._element.contains(event.target)) {\n this._element.focus()\n }\n })\n }\n\n _setEscapeEvent() {\n if (this._isShown) {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n if (this._config.keyboard && event.key === ESCAPE_KEY) {\n event.preventDefault()\n this.hide()\n } else if (!this._config.keyboard && event.key === ESCAPE_KEY) {\n this._triggerBackdropTransition()\n }\n })\n } else {\n EventHandler.off(this._element, EVENT_KEYDOWN_DISMISS)\n }\n }\n\n _setResizeEvent() {\n if (this._isShown) {\n EventHandler.on(window, EVENT_RESIZE, () => this._adjustDialog())\n } else {\n EventHandler.off(window, EVENT_RESIZE)\n }\n }\n\n _hideModal() {\n this._element.style.display = 'none'\n this._element.setAttribute('aria-hidden', true)\n this._element.removeAttribute('aria-modal')\n this._element.removeAttribute('role')\n this._isTransitioning = false\n this._showBackdrop(() => {\n document.body.classList.remove(CLASS_NAME_OPEN)\n this._resetAdjustments()\n this._resetScrollbar()\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n })\n }\n\n _removeBackdrop() {\n this._backdrop.parentNode.removeChild(this._backdrop)\n this._backdrop = null\n }\n\n _showBackdrop(callback) {\n const animate = this._element.classList.contains(CLASS_NAME_FADE) ?\n CLASS_NAME_FADE :\n ''\n\n if (this._isShown && this._config.backdrop) {\n this._backdrop = document.createElement('div')\n this._backdrop.className = CLASS_NAME_BACKDROP\n\n if (animate) {\n this._backdrop.classList.add(animate)\n }\n\n document.body.appendChild(this._backdrop)\n\n EventHandler.on(this._element, EVENT_CLICK_DISMISS, event => {\n if (this._ignoreBackdropClick) {\n this._ignoreBackdropClick = false\n return\n }\n\n if (event.target !== event.currentTarget) {\n return\n }\n\n if (this._config.backdrop === 'static') {\n this._triggerBackdropTransition()\n } else {\n this.hide()\n }\n })\n\n if (animate) {\n reflow(this._backdrop)\n }\n\n this._backdrop.classList.add(CLASS_NAME_SHOW)\n\n if (!animate) {\n callback()\n return\n }\n\n const backdropTransitionDuration = getTransitionDurationFromElement(this._backdrop)\n\n EventHandler.one(this._backdrop, TRANSITION_END, callback)\n emulateTransitionEnd(this._backdrop, backdropTransitionDuration)\n } else if (!this._isShown && this._backdrop) {\n this._backdrop.classList.remove(CLASS_NAME_SHOW)\n\n const callbackRemove = () => {\n this._removeBackdrop()\n callback()\n }\n\n if (this._element.classList.contains(CLASS_NAME_FADE)) {\n const backdropTransitionDuration = getTransitionDurationFromElement(this._backdrop)\n EventHandler.one(this._backdrop, TRANSITION_END, callbackRemove)\n emulateTransitionEnd(this._backdrop, backdropTransitionDuration)\n } else {\n callbackRemove()\n }\n } else {\n callback()\n }\n }\n\n _triggerBackdropTransition() {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n if (hideEvent.defaultPrevented) {\n return\n }\n\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n\n if (!isModalOverflowing) {\n this._element.style.overflowY = 'hidden'\n }\n\n this._element.classList.add(CLASS_NAME_STATIC)\n const modalTransitionDuration = getTransitionDurationFromElement(this._dialog)\n EventHandler.off(this._element, TRANSITION_END)\n EventHandler.one(this._element, TRANSITION_END, () => {\n this._element.classList.remove(CLASS_NAME_STATIC)\n if (!isModalOverflowing) {\n EventHandler.one(this._element, TRANSITION_END, () => {\n this._element.style.overflowY = ''\n })\n emulateTransitionEnd(this._element, modalTransitionDuration)\n }\n })\n emulateTransitionEnd(this._element, modalTransitionDuration)\n this._element.focus()\n }\n\n // ----------------------------------------------------------------------\n // the following methods are used to handle overflowing modals\n // ----------------------------------------------------------------------\n\n _adjustDialog() {\n const isModalOverflowing =\n this._element.scrollHeight > document.documentElement.clientHeight\n\n if ((!this._isBodyOverflowing && isModalOverflowing && !isRTL) || (this._isBodyOverflowing && !isModalOverflowing && isRTL)) {\n this._element.style.paddingLeft = `${this._scrollbarWidth}px`\n }\n\n if ((this._isBodyOverflowing && !isModalOverflowing && !isRTL) || (!this._isBodyOverflowing && isModalOverflowing && isRTL)) {\n this._element.style.paddingRight = `${this._scrollbarWidth}px`\n }\n }\n\n _resetAdjustments() {\n this._element.style.paddingLeft = ''\n this._element.style.paddingRight = ''\n }\n\n _checkScrollbar() {\n const rect = document.body.getBoundingClientRect()\n this._isBodyOverflowing = Math.round(rect.left + rect.right) < window.innerWidth\n this._scrollbarWidth = this._getScrollbarWidth()\n }\n\n _setScrollbar() {\n if (this._isBodyOverflowing) {\n // Note: DOMNode.style.paddingRight returns the actual value or '' if not set\n // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set\n\n // Adjust fixed content padding\n SelectorEngine.find(SELECTOR_FIXED_CONTENT)\n .forEach(element => {\n const actualPadding = element.style.paddingRight\n const calculatedPadding = window.getComputedStyle(element)['padding-right']\n Manipulator.setDataAttribute(element, 'padding-right', actualPadding)\n element.style.paddingRight = `${Number.parseFloat(calculatedPadding) + this._scrollbarWidth}px`\n })\n\n // Adjust sticky content margin\n SelectorEngine.find(SELECTOR_STICKY_CONTENT)\n .forEach(element => {\n const actualMargin = element.style.marginRight\n const calculatedMargin = window.getComputedStyle(element)['margin-right']\n Manipulator.setDataAttribute(element, 'margin-right', actualMargin)\n element.style.marginRight = `${Number.parseFloat(calculatedMargin) - this._scrollbarWidth}px`\n })\n\n // Adjust body padding\n const actualPadding = document.body.style.paddingRight\n const calculatedPadding = window.getComputedStyle(document.body)['padding-right']\n\n Manipulator.setDataAttribute(document.body, 'padding-right', actualPadding)\n document.body.style.paddingRight = `${Number.parseFloat(calculatedPadding) + this._scrollbarWidth}px`\n }\n\n document.body.classList.add(CLASS_NAME_OPEN)\n }\n\n _resetScrollbar() {\n // Restore fixed content padding\n SelectorEngine.find(SELECTOR_FIXED_CONTENT)\n .forEach(element => {\n const padding = Manipulator.getDataAttribute(element, 'padding-right')\n if (typeof padding !== 'undefined') {\n Manipulator.removeDataAttribute(element, 'padding-right')\n element.style.paddingRight = padding\n }\n })\n\n // Restore sticky content and navbar-toggler margin\n SelectorEngine.find(`${SELECTOR_STICKY_CONTENT}`)\n .forEach(element => {\n const margin = Manipulator.getDataAttribute(element, 'margin-right')\n if (typeof margin !== 'undefined') {\n Manipulator.removeDataAttribute(element, 'margin-right')\n element.style.marginRight = margin\n }\n })\n\n // Restore body padding\n const padding = Manipulator.getDataAttribute(document.body, 'padding-right')\n if (typeof padding === 'undefined') {\n document.body.style.paddingRight = ''\n } else {\n Manipulator.removeDataAttribute(document.body, 'padding-right')\n document.body.style.paddingRight = padding\n }\n }\n\n _getScrollbarWidth() { // thx d.walsh\n const scrollDiv = document.createElement('div')\n scrollDiv.className = CLASS_NAME_SCROLLBAR_MEASURER\n document.body.appendChild(scrollDiv)\n const scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth\n document.body.removeChild(scrollDiv)\n return scrollbarWidth\n }\n\n // Static\n\n static jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY)\n const _config = {\n ...Default,\n ...Manipulator.getDataAttributes(this),\n ...(typeof config === 'object' && config ? config : {})\n }\n\n if (!data) {\n data = new Modal(this, _config)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](relatedTarget)\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n const target = getElementFromSelector(this)\n\n if (this.tagName === 'A' || this.tagName === 'AREA') {\n event.preventDefault()\n }\n\n EventHandler.one(target, EVENT_SHOW, showEvent => {\n if (showEvent.defaultPrevented) {\n // only register focus restorer if modal will actually get shown\n return\n }\n\n EventHandler.one(target, EVENT_HIDDEN, () => {\n if (isVisible(this)) {\n this.focus()\n }\n })\n })\n\n let data = Data.getData(target, DATA_KEY)\n if (!data) {\n const config = {\n ...Manipulator.getDataAttributes(target),\n ...Manipulator.getDataAttributes(this)\n }\n\n data = new Modal(target, config)\n }\n\n data.show(this)\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Modal to jQuery only if jQuery is present\n */\n\nonDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Modal.jQueryInterface\n $.fn[NAME].Constructor = Modal\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Modal.jQueryInterface\n }\n }\n})\n\nexport default Modal\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst uriAttrs = new Set([\n 'background',\n 'cite',\n 'href',\n 'itemtype',\n 'longdesc',\n 'poster',\n 'src',\n 'xlink:href'\n])\n\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\n/**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/gi\n\n/**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i\n\nconst allowedAttribute = (attr, allowedAttributeList) => {\n const attrName = attr.nodeName.toLowerCase()\n\n if (allowedAttributeList.includes(attrName)) {\n if (uriAttrs.has(attrName)) {\n return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN))\n }\n\n return true\n }\n\n const regExp = allowedAttributeList.filter(attrRegex => attrRegex instanceof RegExp)\n\n // Check if a regular expression validates the attribute.\n for (let i = 0, len = regExp.length; i < len; i++) {\n if (attrName.match(regExp[i])) {\n return true\n }\n }\n\n return false\n}\n\nexport const DefaultAllowlist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n}\n\nexport function sanitizeHtml(unsafeHtml, allowList, sanitizeFn) {\n if (!unsafeHtml.length) {\n return unsafeHtml\n }\n\n if (sanitizeFn && typeof sanitizeFn === 'function') {\n return sanitizeFn(unsafeHtml)\n }\n\n const domParser = new window.DOMParser()\n const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n const allowlistKeys = Object.keys(allowList)\n const elements = [].concat(...createdDocument.body.querySelectorAll('*'))\n\n for (let i = 0, len = elements.length; i < len; i++) {\n const el = elements[i]\n const elName = el.nodeName.toLowerCase()\n\n if (!allowlistKeys.includes(elName)) {\n el.parentNode.removeChild(el)\n\n continue\n }\n\n const attributeList = [].concat(...el.attributes)\n const allowedAttributes = [].concat(allowList['*'] || [], allowList[elName] || [])\n\n attributeList.forEach(attr => {\n if (!allowedAttribute(attr, allowedAttributes)) {\n el.removeAttribute(attr.nodeName)\n }\n })\n }\n\n return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\n\nimport {\n getjQuery,\n onDOMContentLoaded,\n TRANSITION_END,\n emulateTransitionEnd,\n findShadowRoot,\n getTransitionDurationFromElement,\n getUID,\n isElement,\n isRTL,\n noop,\n typeCheckConfig\n} from './util/index'\nimport {\n DefaultAllowlist,\n sanitizeHtml\n} from './util/sanitizer'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tooltip'\nconst DATA_KEY = 'bs.tooltip'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst CLASS_PREFIX = 'bs-tooltip'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn'])\n\nconst DefaultType = {\n animation: 'boolean',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string',\n delay: '(number|object)',\n html: 'boolean',\n selector: '(string|boolean)',\n placement: '(string|function)',\n container: '(string|element|boolean)',\n fallbackPlacements: '(null|array)',\n boundary: '(string|element)',\n customClass: '(string|function)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n allowList: 'object',\n popperConfig: '(null|object)'\n}\n\nconst AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: isRTL ? 'left' : 'right',\n BOTTOM: 'bottom',\n LEFT: isRTL ? 'right' : 'left'\n}\n\nconst Default = {\n animation: true,\n template: '' +\n '' +\n '' +\n '',\n trigger: 'hover focus',\n title: '',\n delay: 0,\n html: false,\n selector: false,\n placement: 'top',\n container: false,\n fallbackPlacements: null,\n boundary: 'clippingParents',\n customClass: '',\n sanitize: true,\n sanitizeFn: null,\n allowList: DefaultAllowlist,\n popperConfig: null\n}\n\nconst Event = {\n HIDE: `hide${EVENT_KEY}`,\n HIDDEN: `hidden${EVENT_KEY}`,\n SHOW: `show${EVENT_KEY}`,\n SHOWN: `shown${EVENT_KEY}`,\n INSERTED: `inserted${EVENT_KEY}`,\n CLICK: `click${EVENT_KEY}`,\n FOCUSIN: `focusin${EVENT_KEY}`,\n FOCUSOUT: `focusout${EVENT_KEY}`,\n MOUSEENTER: `mouseenter${EVENT_KEY}`,\n MOUSELEAVE: `mouseleave${EVENT_KEY}`\n}\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_MODAL = 'modal'\nconst CLASS_NAME_SHOW = 'show'\n\nconst HOVER_STATE_SHOW = 'show'\nconst HOVER_STATE_OUT = 'out'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tooltip extends BaseComponent {\n constructor(element, config) {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)')\n }\n\n super(element)\n\n // private\n this._isEnabled = true\n this._timeout = 0\n this._hoverState = ''\n this._activeTrigger = {}\n this._popper = null\n\n // Protected\n this.config = this._getConfig(config)\n this.tip = null\n\n this._setListeners()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n static get Event() {\n return Event\n }\n\n static get EVENT_KEY() {\n return EVENT_KEY\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Public\n\n enable() {\n this._isEnabled = true\n }\n\n disable() {\n this._isEnabled = false\n }\n\n toggleEnabled() {\n this._isEnabled = !this._isEnabled\n }\n\n toggle(event) {\n if (!this._isEnabled) {\n return\n }\n\n if (event) {\n const dataKey = this.constructor.DATA_KEY\n let context = Data.getData(event.delegateTarget, dataKey)\n\n if (!context) {\n context = new this.constructor(event.delegateTarget, this._getDelegateConfig())\n Data.setData(event.delegateTarget, dataKey, context)\n }\n\n context._activeTrigger.click = !context._activeTrigger.click\n\n if (context._isWithActiveTrigger()) {\n context._enter(null, context)\n } else {\n context._leave(null, context)\n }\n } else {\n if (this.getTipElement().classList.contains(CLASS_NAME_SHOW)) {\n this._leave(null, this)\n return\n }\n\n this._enter(null, this)\n }\n }\n\n dispose() {\n clearTimeout(this._timeout)\n\n EventHandler.off(this._element, this.constructor.EVENT_KEY)\n EventHandler.off(this._element.closest(`.${CLASS_NAME_MODAL}`), 'hide.bs.modal', this._hideModalHandler)\n\n if (this.tip) {\n this.tip.parentNode.removeChild(this.tip)\n }\n\n this._isEnabled = null\n this._timeout = null\n this._hoverState = null\n this._activeTrigger = null\n if (this._popper) {\n this._popper.destroy()\n }\n\n this._popper = null\n this.config = null\n this.tip = null\n super.dispose()\n }\n\n show() {\n if (this._element.style.display === 'none') {\n throw new Error('Please use show on visible elements')\n }\n\n if (this.isWithContent() && this._isEnabled) {\n const showEvent = EventHandler.trigger(this._element, this.constructor.Event.SHOW)\n const shadowRoot = findShadowRoot(this._element)\n const isInTheDom = shadowRoot === null ?\n this._element.ownerDocument.documentElement.contains(this._element) :\n shadowRoot.contains(this._element)\n\n if (showEvent.defaultPrevented || !isInTheDom) {\n return\n }\n\n const tip = this.getTipElement()\n const tipId = getUID(this.constructor.NAME)\n\n tip.setAttribute('id', tipId)\n this._element.setAttribute('aria-describedby', tipId)\n\n this.setContent()\n\n if (this.config.animation) {\n tip.classList.add(CLASS_NAME_FADE)\n }\n\n const placement = typeof this.config.placement === 'function' ?\n this.config.placement.call(this, tip, this._element) :\n this.config.placement\n\n const attachment = this._getAttachment(placement)\n this._addAttachmentClass(attachment)\n\n const container = this._getContainer()\n Data.setData(tip, this.constructor.DATA_KEY, this)\n\n if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n container.appendChild(tip)\n }\n\n EventHandler.trigger(this._element, this.constructor.Event.INSERTED)\n\n this._popper = Popper.createPopper(this._element, tip, this._getPopperConfig(attachment))\n\n tip.classList.add(CLASS_NAME_SHOW)\n\n const customClass = typeof this.config.customClass === 'function' ? this.config.customClass() : this.config.customClass\n if (customClass) {\n tip.classList.add(...customClass.split(' '))\n }\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement) {\n [].concat(...document.body.children).forEach(element => {\n EventHandler.on(element, 'mouseover', noop())\n })\n }\n\n const complete = () => {\n const prevHoverState = this._hoverState\n\n this._hoverState = null\n EventHandler.trigger(this._element, this.constructor.Event.SHOWN)\n\n if (prevHoverState === HOVER_STATE_OUT) {\n this._leave(null, this)\n }\n }\n\n if (this.tip.classList.contains(CLASS_NAME_FADE)) {\n const transitionDuration = getTransitionDurationFromElement(this.tip)\n EventHandler.one(this.tip, TRANSITION_END, complete)\n emulateTransitionEnd(this.tip, transitionDuration)\n } else {\n complete()\n }\n }\n }\n\n hide() {\n if (!this._popper) {\n return\n }\n\n const tip = this.getTipElement()\n const complete = () => {\n if (this._hoverState !== HOVER_STATE_SHOW && tip.parentNode) {\n tip.parentNode.removeChild(tip)\n }\n\n this._cleanTipClass()\n this._element.removeAttribute('aria-describedby')\n EventHandler.trigger(this._element, this.constructor.Event.HIDDEN)\n\n if (this._popper) {\n this._popper.destroy()\n this._popper = null\n }\n }\n\n const hideEvent = EventHandler.trigger(this._element, this.constructor.Event.HIDE)\n if (hideEvent.defaultPrevented) {\n return\n }\n\n tip.classList.remove(CLASS_NAME_SHOW)\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n [].concat(...document.body.children)\n .forEach(element => EventHandler.off(element, 'mouseover', noop))\n }\n\n this._activeTrigger[TRIGGER_CLICK] = false\n this._activeTrigger[TRIGGER_FOCUS] = false\n this._activeTrigger[TRIGGER_HOVER] = false\n\n if (this.tip.classList.contains(CLASS_NAME_FADE)) {\n const transitionDuration = getTransitionDurationFromElement(tip)\n\n EventHandler.one(tip, TRANSITION_END, complete)\n emulateTransitionEnd(tip, transitionDuration)\n } else {\n complete()\n }\n\n this._hoverState = ''\n }\n\n update() {\n if (this._popper !== null) {\n this._popper.update()\n }\n }\n\n // Protected\n\n isWithContent() {\n return Boolean(this.getTitle())\n }\n\n getTipElement() {\n if (this.tip) {\n return this.tip\n }\n\n const element = document.createElement('div')\n element.innerHTML = this.config.template\n\n this.tip = element.children[0]\n return this.tip\n }\n\n setContent() {\n const tip = this.getTipElement()\n this.setElementContent(SelectorEngine.findOne(SELECTOR_TOOLTIP_INNER, tip), this.getTitle())\n tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n }\n\n setElementContent(element, content) {\n if (element === null) {\n return\n }\n\n if (typeof content === 'object' && isElement(content)) {\n if (content.jquery) {\n content = content[0]\n }\n\n // content is a DOM node or a jQuery\n if (this.config.html) {\n if (content.parentNode !== element) {\n element.innerHTML = ''\n element.appendChild(content)\n }\n } else {\n element.textContent = content.textContent\n }\n\n return\n }\n\n if (this.config.html) {\n if (this.config.sanitize) {\n content = sanitizeHtml(content, this.config.allowList, this.config.sanitizeFn)\n }\n\n element.innerHTML = content\n } else {\n element.textContent = content\n }\n }\n\n getTitle() {\n let title = this._element.getAttribute('data-bs-original-title')\n\n if (!title) {\n title = typeof this.config.title === 'function' ?\n this.config.title.call(this._element) :\n this.config.title\n }\n\n return title\n }\n\n updateAttachment(attachment) {\n if (attachment === 'right') {\n return 'end'\n }\n\n if (attachment === 'left') {\n return 'start'\n }\n\n return attachment\n }\n\n // Private\n\n _getPopperConfig(attachment) {\n const flipModifier = {\n name: 'flip',\n options: {\n altBoundary: true\n }\n }\n\n if (this.config.fallbackPlacements) {\n flipModifier.options.fallbackPlacements = this.config.fallbackPlacements\n }\n\n const defaultBsConfig = {\n placement: attachment,\n modifiers: [\n flipModifier,\n {\n name: 'preventOverflow',\n options: {\n rootBoundary: this.config.boundary\n }\n },\n {\n name: 'arrow',\n options: {\n element: `.${this.constructor.NAME}-arrow`\n }\n },\n {\n name: 'onChange',\n enabled: true,\n phase: 'afterWrite',\n fn: data => this._handlePopperPlacementChange(data)\n }\n ],\n onFirstUpdate: data => {\n if (data.options.placement !== data.placement) {\n this._handlePopperPlacementChange(data)\n }\n }\n }\n\n return {\n ...defaultBsConfig,\n ...this.config.popperConfig\n }\n }\n\n _addAttachmentClass(attachment) {\n this.getTipElement().classList.add(`${CLASS_PREFIX}-${this.updateAttachment(attachment)}`)\n }\n\n _getContainer() {\n if (this.config.container === false) {\n return document.body\n }\n\n if (isElement(this.config.container)) {\n return this.config.container\n }\n\n return SelectorEngine.findOne(this.config.container)\n }\n\n _getAttachment(placement) {\n return AttachmentMap[placement.toUpperCase()]\n }\n\n _setListeners() {\n const triggers = this.config.trigger.split(' ')\n\n triggers.forEach(trigger => {\n if (trigger === 'click') {\n EventHandler.on(this._element, this.constructor.Event.CLICK, this.config.selector, event => this.toggle(event)\n )\n } else if (trigger !== TRIGGER_MANUAL) {\n const eventIn = trigger === TRIGGER_HOVER ?\n this.constructor.Event.MOUSEENTER :\n this.constructor.Event.FOCUSIN\n const eventOut = trigger === TRIGGER_HOVER ?\n this.constructor.Event.MOUSELEAVE :\n this.constructor.Event.FOCUSOUT\n\n EventHandler.on(this._element, eventIn, this.config.selector, event => this._enter(event))\n EventHandler.on(this._element, eventOut, this.config.selector, event => this._leave(event))\n }\n })\n\n this._hideModalHandler = () => {\n if (this._element) {\n this.hide()\n }\n }\n\n EventHandler.on(this._element.closest(`.${CLASS_NAME_MODAL}`), 'hide.bs.modal', this._hideModalHandler)\n\n if (this.config.selector) {\n this.config = {\n ...this.config,\n trigger: 'manual',\n selector: ''\n }\n } else {\n this._fixTitle()\n }\n }\n\n _fixTitle() {\n const title = this._element.getAttribute('title')\n const originalTitleType = typeof this._element.getAttribute('data-bs-original-title')\n\n if (title || originalTitleType !== 'string') {\n this._element.setAttribute('data-bs-original-title', title || '')\n if (title && !this._element.getAttribute('aria-label') && !this._element.textContent) {\n this._element.setAttribute('aria-label', title)\n }\n\n this._element.setAttribute('title', '')\n }\n }\n\n _enter(event, context) {\n const dataKey = this.constructor.DATA_KEY\n context = context || Data.getData(event.delegateTarget, dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.delegateTarget,\n this._getDelegateConfig()\n )\n Data.setData(event.delegateTarget, dataKey, context)\n }\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER\n ] = true\n }\n\n if (context.getTipElement().classList.contains(CLASS_NAME_SHOW) || context._hoverState === HOVER_STATE_SHOW) {\n context._hoverState = HOVER_STATE_SHOW\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HOVER_STATE_SHOW\n\n if (!context.config.delay || !context.config.delay.show) {\n context.show()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HOVER_STATE_SHOW) {\n context.show()\n }\n }, context.config.delay.show)\n }\n\n _leave(event, context) {\n const dataKey = this.constructor.DATA_KEY\n context = context || Data.getData(event.delegateTarget, dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.delegateTarget,\n this._getDelegateConfig()\n )\n Data.setData(event.delegateTarget, dataKey, context)\n }\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER\n ] = false\n }\n\n if (context._isWithActiveTrigger()) {\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HOVER_STATE_OUT\n\n if (!context.config.delay || !context.config.delay.hide) {\n context.hide()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HOVER_STATE_OUT) {\n context.hide()\n }\n }, context.config.delay.hide)\n }\n\n _isWithActiveTrigger() {\n for (const trigger in this._activeTrigger) {\n if (this._activeTrigger[trigger]) {\n return true\n }\n }\n\n return false\n }\n\n _getConfig(config) {\n const dataAttributes = Manipulator.getDataAttributes(this._element)\n\n Object.keys(dataAttributes).forEach(dataAttr => {\n if (DISALLOWED_ATTRIBUTES.has(dataAttr)) {\n delete dataAttributes[dataAttr]\n }\n })\n\n if (config && typeof config.container === 'object' && config.container.jquery) {\n config.container = config.container[0]\n }\n\n config = {\n ...this.constructor.Default,\n ...dataAttributes,\n ...(typeof config === 'object' && config ? config : {})\n }\n\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n }\n }\n\n if (typeof config.title === 'number') {\n config.title = config.title.toString()\n }\n\n if (typeof config.content === 'number') {\n config.content = config.content.toString()\n }\n\n typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n if (config.sanitize) {\n config.template = sanitizeHtml(config.template, config.allowList, config.sanitizeFn)\n }\n\n return config\n }\n\n _getDelegateConfig() {\n const config = {}\n\n if (this.config) {\n for (const key in this.config) {\n if (this.constructor.Default[key] !== this.config[key]) {\n config[key] = this.config[key]\n }\n }\n }\n\n return config\n }\n\n _cleanTipClass() {\n const tip = this.getTipElement()\n const tabClass = tip.getAttribute('class').match(BSCLS_PREFIX_REGEX)\n if (tabClass !== null && tabClass.length > 0) {\n tabClass.map(token => token.trim())\n .forEach(tClass => tip.classList.remove(tClass))\n }\n }\n\n _handlePopperPlacementChange(popperData) {\n const { state } = popperData\n\n if (!state) {\n return\n }\n\n this.tip = state.elements.popper\n this._cleanTipClass()\n this._addAttachmentClass(this._getAttachment(state.placement))\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY)\n const _config = typeof config === 'object' && config\n\n if (!data && /dispose|hide/.test(config)) {\n return\n }\n\n if (!data) {\n data = new Tooltip(this, _config)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Tooltip to jQuery only if jQuery is present\n */\n\nonDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Tooltip.jQueryInterface\n $.fn[NAME].Constructor = Tooltip\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Tooltip.jQueryInterface\n }\n }\n})\n\nexport default Tooltip\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery, onDOMContentLoaded } from './util/index'\nimport Data from './dom/data'\nimport SelectorEngine from './dom/selector-engine'\nimport Tooltip from './tooltip'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'popover'\nconst DATA_KEY = 'bs.popover'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst CLASS_PREFIX = 'bs-popover'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\n\nconst Default = {\n ...Tooltip.Default,\n placement: 'right',\n trigger: 'click',\n content: '',\n template: '' +\n '' +\n '' +\n '' +\n ''\n}\n\nconst DefaultType = {\n ...Tooltip.DefaultType,\n content: '(string|element|function)'\n}\n\nconst Event = {\n HIDE: `hide${EVENT_KEY}`,\n HIDDEN: `hidden${EVENT_KEY}`,\n SHOW: `show${EVENT_KEY}`,\n SHOWN: `shown${EVENT_KEY}`,\n INSERTED: `inserted${EVENT_KEY}`,\n CLICK: `click${EVENT_KEY}`,\n FOCUSIN: `focusin${EVENT_KEY}`,\n FOCUSOUT: `focusout${EVENT_KEY}`,\n MOUSEENTER: `mouseenter${EVENT_KEY}`,\n MOUSELEAVE: `mouseleave${EVENT_KEY}`\n}\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Popover extends Tooltip {\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n static get Event() {\n return Event\n }\n\n static get EVENT_KEY() {\n return EVENT_KEY\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Overrides\n\n isWithContent() {\n return this.getTitle() || this._getContent()\n }\n\n setContent() {\n const tip = this.getTipElement()\n\n // we use append for html objects to maintain js events\n this.setElementContent(SelectorEngine.findOne(SELECTOR_TITLE, tip), this.getTitle())\n let content = this._getContent()\n if (typeof content === 'function') {\n content = content.call(this._element)\n }\n\n this.setElementContent(SelectorEngine.findOne(SELECTOR_CONTENT, tip), content)\n\n tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n }\n\n // Private\n\n _addAttachmentClass(attachment) {\n this.getTipElement().classList.add(`${CLASS_PREFIX}-${this.updateAttachment(attachment)}`)\n }\n\n _getContent() {\n return this._element.getAttribute('data-bs-content') || this.config.content\n }\n\n _cleanTipClass() {\n const tip = this.getTipElement()\n const tabClass = tip.getAttribute('class').match(BSCLS_PREFIX_REGEX)\n if (tabClass !== null && tabClass.length > 0) {\n tabClass.map(token => token.trim())\n .forEach(tClass => tip.classList.remove(tClass))\n }\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY)\n const _config = typeof config === 'object' ? config : null\n\n if (!data && /dispose|hide/.test(config)) {\n return\n }\n\n if (!data) {\n data = new Popover(this, _config)\n Data.setData(this, DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Popover to jQuery only if jQuery is present\n */\n\nonDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Popover.jQueryInterface\n $.fn[NAME].Constructor = Popover\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Popover.jQueryInterface\n }\n }\n})\n\nexport default Popover\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n getjQuery,\n onDOMContentLoaded,\n getSelectorFromElement,\n getUID,\n isElement,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'scrollspy'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst Default = {\n offset: 10,\n method: 'auto',\n target: ''\n}\n\nconst DefaultType = {\n offset: 'number',\n method: 'string',\n target: '(string|element)'\n}\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_SCROLL = `scroll${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_NAV_LINKS = '.nav-link'\nconst SELECTOR_NAV_ITEMS = '.nav-item'\nconst SELECTOR_LIST_ITEMS = '.list-group-item'\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\n\nconst METHOD_OFFSET = 'offset'\nconst METHOD_POSITION = 'position'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass ScrollSpy extends BaseComponent {\n constructor(element, config) {\n super(element)\n this._scrollElement = element.tagName === 'BODY' ? window : element\n this._config = this._getConfig(config)\n this._selector = `${this._config.target} ${SELECTOR_NAV_LINKS}, ${this._config.target} ${SELECTOR_LIST_ITEMS}, ${this._config.target} .${CLASS_NAME_DROPDOWN_ITEM}`\n this._offsets = []\n this._targets = []\n this._activeTarget = null\n this._scrollHeight = 0\n\n EventHandler.on(this._scrollElement, EVENT_SCROLL, event => this._process(event))\n\n this.refresh()\n this._process()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n refresh() {\n const autoMethod = this._scrollElement === this._scrollElement.window ?\n METHOD_OFFSET :\n METHOD_POSITION\n\n const offsetMethod = this._config.method === 'auto' ?\n autoMethod :\n this._config.method\n\n const offsetBase = offsetMethod === METHOD_POSITION ?\n this._getScrollTop() :\n 0\n\n this._offsets = []\n this._targets = []\n this._scrollHeight = this._getScrollHeight()\n\n const targets = SelectorEngine.find(this._selector)\n\n targets.map(element => {\n const targetSelector = getSelectorFromElement(element)\n const target = targetSelector ? SelectorEngine.findOne(targetSelector) : null\n\n if (target) {\n const targetBCR = target.getBoundingClientRect()\n if (targetBCR.width || targetBCR.height) {\n return [\n Manipulator[offsetMethod](target).top + offsetBase,\n targetSelector\n ]\n }\n }\n\n return null\n })\n .filter(item => item)\n .sort((a, b) => a[0] - b[0])\n .forEach(item => {\n this._offsets.push(item[0])\n this._targets.push(item[1])\n })\n }\n\n dispose() {\n super.dispose()\n EventHandler.off(this._scrollElement, EVENT_KEY)\n\n this._scrollElement = null\n this._config = null\n this._selector = null\n this._offsets = null\n this._targets = null\n this._activeTarget = null\n this._scrollHeight = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...(typeof config === 'object' && config ? config : {})\n }\n\n if (typeof config.target !== 'string' && isElement(config.target)) {\n let { id } = config.target\n if (!id) {\n id = getUID(NAME)\n config.target.id = id\n }\n\n config.target = `#${id}`\n }\n\n typeCheckConfig(NAME, config, DefaultType)\n\n return config\n }\n\n _getScrollTop() {\n return this._scrollElement === window ?\n this._scrollElement.pageYOffset :\n this._scrollElement.scrollTop\n }\n\n _getScrollHeight() {\n return this._scrollElement.scrollHeight || Math.max(\n document.body.scrollHeight,\n document.documentElement.scrollHeight\n )\n }\n\n _getOffsetHeight() {\n return this._scrollElement === window ?\n window.innerHeight :\n this._scrollElement.getBoundingClientRect().height\n }\n\n _process() {\n const scrollTop = this._getScrollTop() + this._config.offset\n const scrollHeight = this._getScrollHeight()\n const maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight()\n\n if (this._scrollHeight !== scrollHeight) {\n this.refresh()\n }\n\n if (scrollTop >= maxScroll) {\n const target = this._targets[this._targets.length - 1]\n\n if (this._activeTarget !== target) {\n this._activate(target)\n }\n\n return\n }\n\n if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n this._activeTarget = null\n this._clear()\n return\n }\n\n for (let i = this._offsets.length; i--;) {\n const isActiveTarget = this._activeTarget !== this._targets[i] &&\n scrollTop >= this._offsets[i] &&\n (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1])\n\n if (isActiveTarget) {\n this._activate(this._targets[i])\n }\n }\n }\n\n _activate(target) {\n this._activeTarget = target\n\n this._clear()\n\n const queries = this._selector.split(',')\n .map(selector => `${selector}[data-bs-target=\"${target}\"],${selector}[href=\"${target}\"]`)\n\n const link = SelectorEngine.findOne(queries.join(','))\n\n if (link.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE, link.closest(SELECTOR_DROPDOWN))\n .classList.add(CLASS_NAME_ACTIVE)\n\n link.classList.add(CLASS_NAME_ACTIVE)\n } else {\n // Set triggered link as active\n link.classList.add(CLASS_NAME_ACTIVE)\n\n SelectorEngine.parents(link, SELECTOR_NAV_LIST_GROUP)\n .forEach(listGroup => {\n // Set triggered links parents as active\n // With both and markup a parent is the previous sibling of any nav ancestor\n SelectorEngine.prev(listGroup, `${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`)\n .forEach(item => item.classList.add(CLASS_NAME_ACTIVE))\n\n // Handle special case when .nav-link is inside .nav-item\n SelectorEngine.prev(listGroup, SELECTOR_NAV_ITEMS)\n .forEach(navItem => {\n SelectorEngine.children(navItem, SELECTOR_NAV_LINKS)\n .forEach(item => item.classList.add(CLASS_NAME_ACTIVE))\n })\n })\n }\n\n EventHandler.trigger(this._scrollElement, EVENT_ACTIVATE, {\n relatedTarget: target\n })\n }\n\n _clear() {\n SelectorEngine.find(this._selector)\n .filter(node => node.classList.contains(CLASS_NAME_ACTIVE))\n .forEach(node => node.classList.remove(CLASS_NAME_ACTIVE))\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY)\n const _config = typeof config === 'object' && config\n\n if (!data) {\n data = new ScrollSpy(this, _config)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n SelectorEngine.find(SELECTOR_DATA_SPY)\n .forEach(spy => new ScrollSpy(spy, Manipulator.getDataAttributes(spy)))\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .ScrollSpy to jQuery only if jQuery is present\n */\n\nonDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = ScrollSpy.jQueryInterface\n $.fn[NAME].Constructor = ScrollSpy\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return ScrollSpy.jQueryInterface\n }\n }\n})\n\nexport default ScrollSpy\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n getjQuery,\n onDOMContentLoaded,\n TRANSITION_END,\n emulateTransitionEnd,\n getElementFromSelector,\n getTransitionDurationFromElement,\n reflow\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tab'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_DISABLED = 'disabled'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ACTIVE_UL = ':scope > li > .active'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\nconst SELECTOR_DROPDOWN_ACTIVE_CHILD = ':scope > .dropdown-menu .active'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tab extends BaseComponent {\n // Getters\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n show() {\n if ((this._element.parentNode &&\n this._element.parentNode.nodeType === Node.ELEMENT_NODE &&\n this._element.classList.contains(CLASS_NAME_ACTIVE)) ||\n this._element.classList.contains(CLASS_NAME_DISABLED)) {\n return\n }\n\n let previous\n const target = getElementFromSelector(this._element)\n const listElement = this._element.closest(SELECTOR_NAV_LIST_GROUP)\n\n if (listElement) {\n const itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE\n previous = SelectorEngine.find(itemSelector, listElement)\n previous = previous[previous.length - 1]\n }\n\n let hideEvent = null\n\n if (previous) {\n hideEvent = EventHandler.trigger(previous, EVENT_HIDE, {\n relatedTarget: this._element\n })\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n relatedTarget: previous\n })\n\n if (showEvent.defaultPrevented || (hideEvent !== null && hideEvent.defaultPrevented)) {\n return\n }\n\n this._activate(this._element, listElement)\n\n const complete = () => {\n EventHandler.trigger(previous, EVENT_HIDDEN, {\n relatedTarget: this._element\n })\n EventHandler.trigger(this._element, EVENT_SHOWN, {\n relatedTarget: previous\n })\n }\n\n if (target) {\n this._activate(target, target.parentNode, complete)\n } else {\n complete()\n }\n }\n\n // Private\n\n _activate(element, container, callback) {\n const activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ?\n SelectorEngine.find(SELECTOR_ACTIVE_UL, container) :\n SelectorEngine.children(container, SELECTOR_ACTIVE)\n\n const active = activeElements[0]\n const isTransitioning = callback && (active && active.classList.contains(CLASS_NAME_FADE))\n\n const complete = () => this._transitionComplete(element, active, callback)\n\n if (active && isTransitioning) {\n const transitionDuration = getTransitionDurationFromElement(active)\n active.classList.remove(CLASS_NAME_SHOW)\n\n EventHandler.one(active, TRANSITION_END, complete)\n emulateTransitionEnd(active, transitionDuration)\n } else {\n complete()\n }\n }\n\n _transitionComplete(element, active, callback) {\n if (active) {\n active.classList.remove(CLASS_NAME_ACTIVE)\n\n const dropdownChild = SelectorEngine.findOne(SELECTOR_DROPDOWN_ACTIVE_CHILD, active.parentNode)\n\n if (dropdownChild) {\n dropdownChild.classList.remove(CLASS_NAME_ACTIVE)\n }\n\n if (active.getAttribute('role') === 'tab') {\n active.setAttribute('aria-selected', false)\n }\n }\n\n element.classList.add(CLASS_NAME_ACTIVE)\n if (element.getAttribute('role') === 'tab') {\n element.setAttribute('aria-selected', true)\n }\n\n reflow(element)\n\n if (element.classList.contains(CLASS_NAME_FADE)) {\n element.classList.add(CLASS_NAME_SHOW)\n }\n\n if (element.parentNode && element.parentNode.classList.contains(CLASS_NAME_DROPDOWN_MENU)) {\n const dropdownElement = element.closest(SELECTOR_DROPDOWN)\n\n if (dropdownElement) {\n SelectorEngine.find(SELECTOR_DROPDOWN_TOGGLE)\n .forEach(dropdown => dropdown.classList.add(CLASS_NAME_ACTIVE))\n }\n\n element.setAttribute('aria-expanded', true)\n }\n\n if (callback) {\n callback()\n }\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Data.getData(this, DATA_KEY) || new Tab(this)\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n event.preventDefault()\n\n const data = Data.getData(this, DATA_KEY) || new Tab(this)\n data.show()\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Tab to jQuery only if jQuery is present\n */\n\nonDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Tab.jQueryInterface\n $.fn[NAME].Constructor = Tab\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Tab.jQueryInterface\n }\n }\n})\n\nexport default Tab\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n getjQuery,\n onDOMContentLoaded,\n TRANSITION_END,\n emulateTransitionEnd,\n getTransitionDurationFromElement,\n reflow,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'toast'\nconst DATA_KEY = 'bs.toast'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_HIDE = 'hide'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\n\nconst DefaultType = {\n animation: 'boolean',\n autohide: 'boolean',\n delay: 'number'\n}\n\nconst Default = {\n animation: true,\n autohide: true,\n delay: 5000\n}\n\nconst SELECTOR_DATA_DISMISS = '[data-bs-dismiss=\"toast\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Toast extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._config = this._getConfig(config)\n this._timeout = null\n this._setListeners()\n }\n\n // Getters\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get Default() {\n return Default\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n show() {\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n this._clearTimeout()\n\n if (this._config.animation) {\n this._element.classList.add(CLASS_NAME_FADE)\n }\n\n const complete = () => {\n this._element.classList.remove(CLASS_NAME_SHOWING)\n this._element.classList.add(CLASS_NAME_SHOW)\n\n EventHandler.trigger(this._element, EVENT_SHOWN)\n\n if (this._config.autohide) {\n this._timeout = setTimeout(() => {\n this.hide()\n }, this._config.delay)\n }\n }\n\n this._element.classList.remove(CLASS_NAME_HIDE)\n reflow(this._element)\n this._element.classList.add(CLASS_NAME_SHOWING)\n if (this._config.animation) {\n const transitionDuration = getTransitionDurationFromElement(this._element)\n\n EventHandler.one(this._element, TRANSITION_END, complete)\n emulateTransitionEnd(this._element, transitionDuration)\n } else {\n complete()\n }\n }\n\n hide() {\n if (!this._element.classList.contains(CLASS_NAME_SHOW)) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n const complete = () => {\n this._element.classList.add(CLASS_NAME_HIDE)\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n this._element.classList.remove(CLASS_NAME_SHOW)\n if (this._config.animation) {\n const transitionDuration = getTransitionDurationFromElement(this._element)\n\n EventHandler.one(this._element, TRANSITION_END, complete)\n emulateTransitionEnd(this._element, transitionDuration)\n } else {\n complete()\n }\n }\n\n dispose() {\n this._clearTimeout()\n\n if (this._element.classList.contains(CLASS_NAME_SHOW)) {\n this._element.classList.remove(CLASS_NAME_SHOW)\n }\n\n EventHandler.off(this._element, EVENT_CLICK_DISMISS)\n\n super.dispose()\n this._config = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...(typeof config === 'object' && config ? config : {})\n }\n\n typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n return config\n }\n\n _setListeners() {\n EventHandler.on(this._element, EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, () => this.hide())\n }\n\n _clearTimeout() {\n clearTimeout(this._timeout)\n this._timeout = null\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY)\n const _config = typeof config === 'object' && config\n\n if (!data) {\n data = new Toast(this, _config)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](this)\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Toast to jQuery only if jQuery is present\n */\n\nonDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Toast.jQueryInterface\n $.fn[NAME].Constructor = Toast\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Toast.jQueryInterface\n }\n }\n})\n\nexport default Toast\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta1): index.umd.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Alert from './src/alert'\nimport Button from './src/button'\nimport Carousel from './src/carousel'\nimport Collapse from './src/collapse'\nimport Dropdown from './src/dropdown'\nimport Modal from './src/modal'\nimport Popover from './src/popover'\nimport ScrollSpy from './src/scrollspy'\nimport Tab from './src/tab'\nimport Toast from './src/toast'\nimport Tooltip from './src/tooltip'\n\nexport default {\n Alert,\n Button,\n Carousel,\n Collapse,\n Dropdown,\n Modal,\n Popover,\n ScrollSpy,\n Tab,\n Toast,\n Tooltip\n}\n"]} \ No newline at end of file diff --git a/dist/js/npm.js b/dist/js/npm.js new file mode 100644 index 000000000..d0564681c --- /dev/null +++ b/dist/js/npm.js @@ -0,0 +1,12 @@ +// This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment. +require('./umd/util.js') +require('./umd/alert.js') +require('./umd/button.js') +require('./umd/carousel.js') +require('./umd/collapse.js') +require('./umd/dropdown.js') +require('./umd/modal.js') +require('./umd/scrollspy.js') +require('./umd/tab.js') +require('./umd/tooltip.js') +require('./umd/popover.js') \ No newline at end of file diff --git a/dist/js/umd/alert.js b/dist/js/umd/alert.js new file mode 100644 index 000000000..577971b8b --- /dev/null +++ b/dist/js/umd/alert.js @@ -0,0 +1,211 @@ +(function (global, factory) { + if (typeof define === 'function' && define.amd) { + define(['exports', 'module', './util'], factory); + } else if (typeof exports !== 'undefined' && typeof module !== 'undefined') { + factory(exports, module, require('./util')); + } else { + var mod = { + exports: {} + }; + factory(mod.exports, mod, global.Util); + global.alert = mod.exports; + } +})(this, function (exports, module, _util) { + 'use strict'; + + var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + + var _Util = _interopRequireDefault(_util); + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0-alpha.2): alert.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + + var Alert = (function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'alert'; + var VERSION = '4.0.0-alpha'; + var DATA_KEY = 'bs.alert'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + var TRANSITION_DURATION = 150; + + var Selector = { + DISMISS: '[data-dismiss="alert"]' + }; + + var Event = { + CLOSE: 'close' + EVENT_KEY, + CLOSED: 'closed' + EVENT_KEY, + CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY + }; + + var ClassName = { + ALERT: 'alert', + FADE: 'fade', + IN: 'in' + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Alert = (function () { + function Alert(element) { + _classCallCheck(this, Alert); + + this._element = element; + } + + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + // getters + + _createClass(Alert, [{ + key: 'close', + + // public + + value: function close(element) { + element = element || this._element; + + var rootElement = this._getRootElement(element); + var customEvent = this._triggerCloseEvent(rootElement); + + if (customEvent.isDefaultPrevented()) { + return; + } + + this._removeElement(rootElement); + } + }, { + key: 'dispose', + value: function dispose() { + $.removeData(this._element, DATA_KEY); + this._element = null; + } + + // private + + }, { + key: '_getRootElement', + value: function _getRootElement(element) { + var selector = _Util['default'].getSelectorFromElement(element); + var parent = false; + + if (selector) { + parent = $(selector)[0]; + } + + if (!parent) { + parent = $(element).closest('.' + ClassName.ALERT)[0]; + } + + return parent; + } + }, { + key: '_triggerCloseEvent', + value: function _triggerCloseEvent(element) { + var closeEvent = $.Event(Event.CLOSE); + + $(element).trigger(closeEvent); + return closeEvent; + } + }, { + key: '_removeElement', + value: function _removeElement(element) { + $(element).removeClass(ClassName.IN); + + if (!_Util['default'].supportsTransitionEnd() || !$(element).hasClass(ClassName.FADE)) { + this._destroyElement(element); + return; + } + + $(element).one(_Util['default'].TRANSITION_END, $.proxy(this._destroyElement, this, element)).emulateTransitionEnd(TRANSITION_DURATION); + } + }, { + key: '_destroyElement', + value: function _destroyElement(element) { + $(element).detach().trigger(Event.CLOSED).remove(); + } + + // static + + }], [{ + key: '_jQueryInterface', + value: function _jQueryInterface(config) { + return this.each(function () { + var $element = $(this); + var data = $element.data(DATA_KEY); + + if (!data) { + data = new Alert(this); + $element.data(DATA_KEY, data); + } + + if (config === 'close') { + data[config](this); + } + }); + } + }, { + key: '_handleDismiss', + value: function _handleDismiss(alertInstance) { + return function (event) { + if (event) { + event.preventDefault(); + } + + alertInstance.close(this); + }; + } + }, { + key: 'VERSION', + get: function get() { + return VERSION; + } + }]); + + return Alert; + })(); + + $(document).on(Event.CLICK_DATA_API, Selector.DISMISS, Alert._handleDismiss(new Alert())); + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = Alert._jQueryInterface; + $.fn[NAME].Constructor = Alert; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Alert._jQueryInterface; + }; + + return Alert; + })(jQuery); + + module.exports = Alert; +}); diff --git a/dist/js/umd/button.js b/dist/js/umd/button.js new file mode 100644 index 000000000..c5d053413 --- /dev/null +++ b/dist/js/umd/button.js @@ -0,0 +1,187 @@ +(function (global, factory) { + if (typeof define === 'function' && define.amd) { + define(['exports', 'module'], factory); + } else if (typeof exports !== 'undefined' && typeof module !== 'undefined') { + factory(exports, module); + } else { + var mod = { + exports: {} + }; + factory(mod.exports, mod); + global.button = mod.exports; + } +})(this, function (exports, module) { + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0-alpha.2): button.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + + 'use strict'; + + var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + + var Button = (function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'button'; + var VERSION = '4.0.0-alpha'; + var DATA_KEY = 'bs.button'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + + var ClassName = { + ACTIVE: 'active', + BUTTON: 'btn', + FOCUS: 'focus' + }; + + var Selector = { + DATA_TOGGLE_CARROT: '[data-toggle^="button"]', + DATA_TOGGLE: '[data-toggle="buttons"]', + INPUT: 'input', + ACTIVE: '.active', + BUTTON: '.btn' + }; + + var Event = { + CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY, + FOCUS_BLUR_DATA_API: 'focus' + EVENT_KEY + DATA_API_KEY + ' ' + ('blur' + EVENT_KEY + DATA_API_KEY) + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Button = (function () { + function Button(element) { + _classCallCheck(this, Button); + + this._element = element; + } + + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + // getters + + _createClass(Button, [{ + key: 'toggle', + + // public + + value: function toggle() { + var triggerChangeEvent = true; + var rootElement = $(this._element).closest(Selector.DATA_TOGGLE)[0]; + + if (rootElement) { + var input = $(this._element).find(Selector.INPUT)[0]; + + if (input) { + if (input.type === 'radio') { + if (input.checked && $(this._element).hasClass(ClassName.ACTIVE)) { + triggerChangeEvent = false; + } else { + var activeElement = $(rootElement).find(Selector.ACTIVE)[0]; + + if (activeElement) { + $(activeElement).removeClass(ClassName.ACTIVE); + } + } + } + + if (triggerChangeEvent) { + input.checked = !$(this._element).hasClass(ClassName.ACTIVE); + $(this._element).trigger('change'); + } + } + } else { + this._element.setAttribute('aria-pressed', !$(this._element).hasClass(ClassName.ACTIVE)); + } + + if (triggerChangeEvent) { + $(this._element).toggleClass(ClassName.ACTIVE); + } + } + }, { + key: 'dispose', + value: function dispose() { + $.removeData(this._element, DATA_KEY); + this._element = null; + } + + // static + + }], [{ + key: '_jQueryInterface', + value: function _jQueryInterface(config) { + return this.each(function () { + var data = $(this).data(DATA_KEY); + + if (!data) { + data = new Button(this); + $(this).data(DATA_KEY, data); + } + + if (config === 'toggle') { + data[config](); + } + }); + } + }, { + key: 'VERSION', + get: function get() { + return VERSION; + } + }]); + + return Button; + })(); + + $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) { + event.preventDefault(); + + var button = event.target; + + if (!$(button).hasClass(ClassName.BUTTON)) { + button = $(button).closest(Selector.BUTTON); + } + + Button._jQueryInterface.call($(button), 'toggle'); + }).on(Event.FOCUS_BLUR_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) { + var button = $(event.target).closest(Selector.BUTTON)[0]; + $(button).toggleClass(ClassName.FOCUS, /^focus(in)?$/.test(event.type)); + }); + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = Button._jQueryInterface; + $.fn[NAME].Constructor = Button; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Button._jQueryInterface; + }; + + return Button; + })(jQuery); + + module.exports = Button; +}); diff --git a/dist/js/umd/carousel.js b/dist/js/umd/carousel.js new file mode 100644 index 000000000..dcce771d7 --- /dev/null +++ b/dist/js/umd/carousel.js @@ -0,0 +1,497 @@ +(function (global, factory) { + if (typeof define === 'function' && define.amd) { + define(['exports', 'module', './util'], factory); + } else if (typeof exports !== 'undefined' && typeof module !== 'undefined') { + factory(exports, module, require('./util')); + } else { + var mod = { + exports: {} + }; + factory(mod.exports, mod, global.Util); + global.carousel = mod.exports; + } +})(this, function (exports, module, _util) { + 'use strict'; + + var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + + var _Util = _interopRequireDefault(_util); + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0-alpha.2): carousel.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + + var Carousel = (function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'carousel'; + var VERSION = '4.0.0-alpha'; + var DATA_KEY = 'bs.carousel'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + var TRANSITION_DURATION = 600; + + var Default = { + interval: 5000, + keyboard: true, + slide: false, + pause: 'hover', + wrap: true + }; + + var DefaultType = { + interval: '(number|boolean)', + keyboard: 'boolean', + slide: '(boolean|string)', + pause: '(string|boolean)', + wrap: 'boolean' + }; + + var Direction = { + NEXT: 'next', + PREVIOUS: 'prev' + }; + + var Event = { + SLIDE: 'slide' + EVENT_KEY, + SLID: 'slid' + EVENT_KEY, + KEYDOWN: 'keydown' + EVENT_KEY, + MOUSEENTER: 'mouseenter' + EVENT_KEY, + MOUSELEAVE: 'mouseleave' + EVENT_KEY, + LOAD_DATA_API: 'load' + EVENT_KEY + DATA_API_KEY, + CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY + }; + + var ClassName = { + CAROUSEL: 'carousel', + ACTIVE: 'active', + SLIDE: 'slide', + RIGHT: 'right', + LEFT: 'left', + ITEM: 'carousel-item' + }; + + var Selector = { + ACTIVE: '.active', + ACTIVE_ITEM: '.active.carousel-item', + ITEM: '.carousel-item', + NEXT_PREV: '.next, .prev', + INDICATORS: '.carousel-indicators', + DATA_SLIDE: '[data-slide], [data-slide-to]', + DATA_RIDE: '[data-ride="carousel"]' + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Carousel = (function () { + function Carousel(element, config) { + _classCallCheck(this, Carousel); + + this._items = null; + this._interval = null; + this._activeElement = null; + + this._isPaused = false; + this._isSliding = false; + + this._config = this._getConfig(config); + this._element = $(element)[0]; + this._indicatorsElement = $(this._element).find(Selector.INDICATORS)[0]; + + this._addEventListeners(); + } + + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + // getters + + _createClass(Carousel, [{ + key: 'next', + + // public + + value: function next() { + if (!this._isSliding) { + this._slide(Direction.NEXT); + } + } + }, { + key: 'nextWhenVisible', + value: function nextWhenVisible() { + // Don't call next when the page isn't visible + if (!document.hidden) { + this.next(); + } + } + }, { + key: 'prev', + value: function prev() { + if (!this._isSliding) { + this._slide(Direction.PREVIOUS); + } + } + }, { + key: 'pause', + value: function pause(event) { + if (!event) { + this._isPaused = true; + } + + if ($(this._element).find(Selector.NEXT_PREV)[0] && _Util['default'].supportsTransitionEnd()) { + _Util['default'].triggerTransitionEnd(this._element); + this.cycle(true); + } + + clearInterval(this._interval); + this._interval = null; + } + }, { + key: 'cycle', + value: function cycle(event) { + if (!event) { + this._isPaused = false; + } + + if (this._interval) { + clearInterval(this._interval); + this._interval = null; + } + + if (this._config.interval && !this._isPaused) { + this._interval = setInterval($.proxy(document.visibilityState ? this.nextWhenVisible : this.next, this), this._config.interval); + } + } + }, { + key: 'to', + value: function to(index) { + var _this = this; + + this._activeElement = $(this._element).find(Selector.ACTIVE_ITEM)[0]; + + var activeIndex = this._getItemIndex(this._activeElement); + + if (index > this._items.length - 1 || index < 0) { + return; + } + + if (this._isSliding) { + $(this._element).one(Event.SLID, function () { + return _this.to(index); + }); + return; + } + + if (activeIndex === index) { + this.pause(); + this.cycle(); + return; + } + + var direction = index > activeIndex ? Direction.NEXT : Direction.PREVIOUS; + + this._slide(direction, this._items[index]); + } + }, { + key: 'dispose', + value: function dispose() { + $(this._element).off(EVENT_KEY); + $.removeData(this._element, DATA_KEY); + + this._items = null; + this._config = null; + this._element = null; + this._interval = null; + this._isPaused = null; + this._isSliding = null; + this._activeElement = null; + this._indicatorsElement = null; + } + + // private + + }, { + key: '_getConfig', + value: function _getConfig(config) { + config = $.extend({}, Default, config); + _Util['default'].typeCheckConfig(NAME, config, DefaultType); + return config; + } + }, { + key: '_addEventListeners', + value: function _addEventListeners() { + if (this._config.keyboard) { + $(this._element).on(Event.KEYDOWN, $.proxy(this._keydown, this)); + } + + if (this._config.pause === 'hover' && !('ontouchstart' in document.documentElement)) { + $(this._element).on(Event.MOUSEENTER, $.proxy(this.pause, this)).on(Event.MOUSELEAVE, $.proxy(this.cycle, this)); + } + } + }, { + key: '_keydown', + value: function _keydown(event) { + event.preventDefault(); + + if (/input|textarea/i.test(event.target.tagName)) { + return; + } + + switch (event.which) { + case 37: + this.prev();break; + case 39: + this.next();break; + default: + return; + } + } + }, { + key: '_getItemIndex', + value: function _getItemIndex(element) { + this._items = $.makeArray($(element).parent().find(Selector.ITEM)); + return this._items.indexOf(element); + } + }, { + key: '_getItemByDirection', + value: function _getItemByDirection(direction, activeElement) { + var isNextDirection = direction === Direction.NEXT; + var isPrevDirection = direction === Direction.PREVIOUS; + var activeIndex = this._getItemIndex(activeElement); + var lastItemIndex = this._items.length - 1; + var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex; + + if (isGoingToWrap && !this._config.wrap) { + return activeElement; + } + + var delta = direction === Direction.PREVIOUS ? -1 : 1; + var itemIndex = (activeIndex + delta) % this._items.length; + + return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex]; + } + }, { + key: '_triggerSlideEvent', + value: function _triggerSlideEvent(relatedTarget, directionalClassname) { + var slideEvent = $.Event(Event.SLIDE, { + relatedTarget: relatedTarget, + direction: directionalClassname + }); + + $(this._element).trigger(slideEvent); + + return slideEvent; + } + }, { + key: '_setActiveIndicatorElement', + value: function _setActiveIndicatorElement(element) { + if (this._indicatorsElement) { + $(this._indicatorsElement).find(Selector.ACTIVE).removeClass(ClassName.ACTIVE); + + var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)]; + + if (nextIndicator) { + $(nextIndicator).addClass(ClassName.ACTIVE); + } + } + } + }, { + key: '_slide', + value: function _slide(direction, element) { + var _this2 = this; + + var activeElement = $(this._element).find(Selector.ACTIVE_ITEM)[0]; + var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement); + + var isCycling = Boolean(this._interval); + + var directionalClassName = direction === Direction.NEXT ? ClassName.LEFT : ClassName.RIGHT; + + if (nextElement && $(nextElement).hasClass(ClassName.ACTIVE)) { + this._isSliding = false; + return; + } + + var slideEvent = this._triggerSlideEvent(nextElement, directionalClassName); + if (slideEvent.isDefaultPrevented()) { + return; + } + + if (!activeElement || !nextElement) { + // some weirdness is happening, so we bail + return; + } + + this._isSliding = true; + + if (isCycling) { + this.pause(); + } + + this._setActiveIndicatorElement(nextElement); + + var slidEvent = $.Event(Event.SLID, { + relatedTarget: nextElement, + direction: directionalClassName + }); + + if (_Util['default'].supportsTransitionEnd() && $(this._element).hasClass(ClassName.SLIDE)) { + + $(nextElement).addClass(direction); + + _Util['default'].reflow(nextElement); + + $(activeElement).addClass(directionalClassName); + $(nextElement).addClass(directionalClassName); + + $(activeElement).one(_Util['default'].TRANSITION_END, function () { + $(nextElement).removeClass(directionalClassName).removeClass(direction); + + $(nextElement).addClass(ClassName.ACTIVE); + + $(activeElement).removeClass(ClassName.ACTIVE).removeClass(direction).removeClass(directionalClassName); + + _this2._isSliding = false; + + setTimeout(function () { + return $(_this2._element).trigger(slidEvent); + }, 0); + }).emulateTransitionEnd(TRANSITION_DURATION); + } else { + $(activeElement).removeClass(ClassName.ACTIVE); + $(nextElement).addClass(ClassName.ACTIVE); + + this._isSliding = false; + $(this._element).trigger(slidEvent); + } + + if (isCycling) { + this.cycle(); + } + } + + // static + + }], [{ + key: '_jQueryInterface', + value: function _jQueryInterface(config) { + return this.each(function () { + var data = $(this).data(DATA_KEY); + var _config = $.extend({}, Default, $(this).data()); + + if (typeof config === 'object') { + $.extend(_config, config); + } + + var action = typeof config === 'string' ? config : _config.slide; + + if (!data) { + data = new Carousel(this, _config); + $(this).data(DATA_KEY, data); + } + + if (typeof config === 'number') { + data.to(config); + } else if (typeof action === 'string') { + if (data[action] === undefined) { + throw new Error('No method named "' + action + '"'); + } + data[action](); + } else if (_config.interval) { + data.pause(); + data.cycle(); + } + }); + } + }, { + key: '_dataApiClickHandler', + value: function _dataApiClickHandler(event) { + var selector = _Util['default'].getSelectorFromElement(this); + + if (!selector) { + return; + } + + var target = $(selector)[0]; + + if (!target || !$(target).hasClass(ClassName.CAROUSEL)) { + return; + } + + var config = $.extend({}, $(target).data(), $(this).data()); + var slideIndex = this.getAttribute('data-slide-to'); + + if (slideIndex) { + config.interval = false; + } + + Carousel._jQueryInterface.call($(target), config); + + if (slideIndex) { + $(target).data(DATA_KEY).to(slideIndex); + } + + event.preventDefault(); + } + }, { + key: 'VERSION', + get: function get() { + return VERSION; + } + }, { + key: 'Default', + get: function get() { + return Default; + } + }]); + + return Carousel; + })(); + + $(document).on(Event.CLICK_DATA_API, Selector.DATA_SLIDE, Carousel._dataApiClickHandler); + + $(window).on(Event.LOAD_DATA_API, function () { + $(Selector.DATA_RIDE).each(function () { + var $carousel = $(this); + Carousel._jQueryInterface.call($carousel, $carousel.data()); + }); + }); + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = Carousel._jQueryInterface; + $.fn[NAME].Constructor = Carousel; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Carousel._jQueryInterface; + }; + + return Carousel; + })(jQuery); + + module.exports = Carousel; +}); diff --git a/dist/js/umd/collapse.js b/dist/js/umd/collapse.js new file mode 100644 index 000000000..5477ce80d --- /dev/null +++ b/dist/js/umd/collapse.js @@ -0,0 +1,383 @@ +(function (global, factory) { + if (typeof define === 'function' && define.amd) { + define(['exports', 'module', './util'], factory); + } else if (typeof exports !== 'undefined' && typeof module !== 'undefined') { + factory(exports, module, require('./util')); + } else { + var mod = { + exports: {} + }; + factory(mod.exports, mod, global.Util); + global.collapse = mod.exports; + } +})(this, function (exports, module, _util) { + 'use strict'; + + var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + + var _Util = _interopRequireDefault(_util); + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0-alpha.2): collapse.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + + var Collapse = (function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'collapse'; + var VERSION = '4.0.0-alpha'; + var DATA_KEY = 'bs.collapse'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + var TRANSITION_DURATION = 600; + + var Default = { + toggle: true, + parent: '' + }; + + var DefaultType = { + toggle: 'boolean', + parent: 'string' + }; + + var Event = { + SHOW: 'show' + EVENT_KEY, + SHOWN: 'shown' + EVENT_KEY, + HIDE: 'hide' + EVENT_KEY, + HIDDEN: 'hidden' + EVENT_KEY, + CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY + }; + + var ClassName = { + IN: 'in', + COLLAPSE: 'collapse', + COLLAPSING: 'collapsing', + COLLAPSED: 'collapsed' + }; + + var Dimension = { + WIDTH: 'width', + HEIGHT: 'height' + }; + + var Selector = { + ACTIVES: '.panel > .in, .panel > .collapsing', + DATA_TOGGLE: '[data-toggle="collapse"]' + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Collapse = (function () { + function Collapse(element, config) { + _classCallCheck(this, Collapse); + + this._isTransitioning = false; + this._element = element; + this._config = this._getConfig(config); + this._triggerArray = $.makeArray($('[data-toggle="collapse"][href="#' + element.id + '"],' + ('[data-toggle="collapse"][data-target="#' + element.id + '"]'))); + + this._parent = this._config.parent ? this._getParent() : null; + + if (!this._config.parent) { + this._addAriaAndCollapsedClass(this._element, this._triggerArray); + } + + if (this._config.toggle) { + this.toggle(); + } + } + + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + // getters + + _createClass(Collapse, [{ + key: 'toggle', + + // public + + value: function toggle() { + if ($(this._element).hasClass(ClassName.IN)) { + this.hide(); + } else { + this.show(); + } + } + }, { + key: 'show', + value: function show() { + var _this = this; + + if (this._isTransitioning || $(this._element).hasClass(ClassName.IN)) { + return; + } + + var actives = undefined; + var activesData = undefined; + + if (this._parent) { + actives = $.makeArray($(Selector.ACTIVES)); + if (!actives.length) { + actives = null; + } + } + + if (actives) { + activesData = $(actives).data(DATA_KEY); + if (activesData && activesData._isTransitioning) { + return; + } + } + + var startEvent = $.Event(Event.SHOW); + $(this._element).trigger(startEvent); + if (startEvent.isDefaultPrevented()) { + return; + } + + if (actives) { + Collapse._jQueryInterface.call($(actives), 'hide'); + if (!activesData) { + $(actives).data(DATA_KEY, null); + } + } + + var dimension = this._getDimension(); + + $(this._element).removeClass(ClassName.COLLAPSE).addClass(ClassName.COLLAPSING); + + this._element.style[dimension] = 0; + this._element.setAttribute('aria-expanded', true); + + if (this._triggerArray.length) { + $(this._triggerArray).removeClass(ClassName.COLLAPSED).attr('aria-expanded', true); + } + + this.setTransitioning(true); + + var complete = function complete() { + $(_this._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).addClass(ClassName.IN); + + _this._element.style[dimension] = ''; + + _this.setTransitioning(false); + + $(_this._element).trigger(Event.SHOWN); + }; + + if (!_Util['default'].supportsTransitionEnd()) { + complete(); + return; + } + + var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1); + var scrollSize = 'scroll' + capitalizedDimension; + + $(this._element).one(_Util['default'].TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION); + + this._element.style[dimension] = this._element[scrollSize] + 'px'; + } + }, { + key: 'hide', + value: function hide() { + var _this2 = this; + + if (this._isTransitioning || !$(this._element).hasClass(ClassName.IN)) { + return; + } + + var startEvent = $.Event(Event.HIDE); + $(this._element).trigger(startEvent); + if (startEvent.isDefaultPrevented()) { + return; + } + + var dimension = this._getDimension(); + var offsetDimension = dimension === Dimension.WIDTH ? 'offsetWidth' : 'offsetHeight'; + + this._element.style[dimension] = this._element[offsetDimension] + 'px'; + + _Util['default'].reflow(this._element); + + $(this._element).addClass(ClassName.COLLAPSING).removeClass(ClassName.COLLAPSE).removeClass(ClassName.IN); + + this._element.setAttribute('aria-expanded', false); + + if (this._triggerArray.length) { + $(this._triggerArray).addClass(ClassName.COLLAPSED).attr('aria-expanded', false); + } + + this.setTransitioning(true); + + var complete = function complete() { + _this2.setTransitioning(false); + $(_this2._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).trigger(Event.HIDDEN); + }; + + this._element.style[dimension] = 0; + + if (!_Util['default'].supportsTransitionEnd()) { + complete(); + return; + } + + $(this._element).one(_Util['default'].TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION); + } + }, { + key: 'setTransitioning', + value: function setTransitioning(isTransitioning) { + this._isTransitioning = isTransitioning; + } + }, { + key: 'dispose', + value: function dispose() { + $.removeData(this._element, DATA_KEY); + + this._config = null; + this._parent = null; + this._element = null; + this._triggerArray = null; + this._isTransitioning = null; + } + + // private + + }, { + key: '_getConfig', + value: function _getConfig(config) { + config = $.extend({}, Default, config); + config.toggle = Boolean(config.toggle); // coerce string values + _Util['default'].typeCheckConfig(NAME, config, DefaultType); + return config; + } + }, { + key: '_getDimension', + value: function _getDimension() { + var hasWidth = $(this._element).hasClass(Dimension.WIDTH); + return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT; + } + }, { + key: '_getParent', + value: function _getParent() { + var _this3 = this; + + var parent = $(this._config.parent)[0]; + var selector = '[data-toggle="collapse"][data-parent="' + this._config.parent + '"]'; + + $(parent).find(selector).each(function (i, element) { + _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]); + }); + + return parent; + } + }, { + key: '_addAriaAndCollapsedClass', + value: function _addAriaAndCollapsedClass(element, triggerArray) { + if (element) { + var isOpen = $(element).hasClass(ClassName.IN); + element.setAttribute('aria-expanded', isOpen); + + if (triggerArray.length) { + $(triggerArray).toggleClass(ClassName.COLLAPSED, !isOpen).attr('aria-expanded', isOpen); + } + } + } + + // static + + }], [{ + key: '_getTargetFromElement', + value: function _getTargetFromElement(element) { + var selector = _Util['default'].getSelectorFromElement(element); + return selector ? $(selector)[0] : null; + } + }, { + key: '_jQueryInterface', + value: function _jQueryInterface(config) { + return this.each(function () { + var $this = $(this); + var data = $this.data(DATA_KEY); + var _config = $.extend({}, Default, $this.data(), typeof config === 'object' && config); + + if (!data && _config.toggle && /show|hide/.test(config)) { + _config.toggle = false; + } + + if (!data) { + data = new Collapse(this, _config); + $this.data(DATA_KEY, data); + } + + if (typeof config === 'string') { + if (data[config] === undefined) { + throw new Error('No method named "' + config + '"'); + } + data[config](); + } + }); + } + }, { + key: 'VERSION', + get: function get() { + return VERSION; + } + }, { + key: 'Default', + get: function get() { + return Default; + } + }]); + + return Collapse; + })(); + + $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) { + event.preventDefault(); + + var target = Collapse._getTargetFromElement(this); + var data = $(target).data(DATA_KEY); + var config = data ? 'toggle' : $(this).data(); + + Collapse._jQueryInterface.call($(target), config); + }); + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = Collapse._jQueryInterface; + $.fn[NAME].Constructor = Collapse; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Collapse._jQueryInterface; + }; + + return Collapse; + })(jQuery); + + module.exports = Collapse; +}); diff --git a/dist/js/umd/dropdown.js b/dist/js/umd/dropdown.js new file mode 100644 index 000000000..94e361094 --- /dev/null +++ b/dist/js/umd/dropdown.js @@ -0,0 +1,312 @@ +(function (global, factory) { + if (typeof define === 'function' && define.amd) { + define(['exports', 'module', './util'], factory); + } else if (typeof exports !== 'undefined' && typeof module !== 'undefined') { + factory(exports, module, require('./util')); + } else { + var mod = { + exports: {} + }; + factory(mod.exports, mod, global.Util); + global.dropdown = mod.exports; + } +})(this, function (exports, module, _util) { + 'use strict'; + + var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + + var _Util = _interopRequireDefault(_util); + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0-alpha.2): dropdown.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + + var Dropdown = (function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'dropdown'; + var VERSION = '4.0.0-alpha'; + var DATA_KEY = 'bs.dropdown'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + + var Event = { + HIDE: 'hide' + EVENT_KEY, + HIDDEN: 'hidden' + EVENT_KEY, + SHOW: 'show' + EVENT_KEY, + SHOWN: 'shown' + EVENT_KEY, + CLICK: 'click' + EVENT_KEY, + CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY, + KEYDOWN_DATA_API: 'keydown' + EVENT_KEY + DATA_API_KEY + }; + + var ClassName = { + BACKDROP: 'dropdown-backdrop', + DISABLED: 'disabled', + OPEN: 'open' + }; + + var Selector = { + BACKDROP: '.dropdown-backdrop', + DATA_TOGGLE: '[data-toggle="dropdown"]', + FORM_CHILD: '.dropdown form', + ROLE_MENU: '[role="menu"]', + ROLE_LISTBOX: '[role="listbox"]', + NAVBAR_NAV: '.navbar-nav', + VISIBLE_ITEMS: '[role="menu"] li:not(.disabled) a, ' + '[role="listbox"] li:not(.disabled) a' + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Dropdown = (function () { + function Dropdown(element) { + _classCallCheck(this, Dropdown); + + this._element = element; + + this._addEventListeners(); + } + + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + // getters + + _createClass(Dropdown, [{ + key: 'toggle', + + // public + + value: function toggle() { + if (this.disabled || $(this).hasClass(ClassName.DISABLED)) { + return false; + } + + var parent = Dropdown._getParentFromElement(this); + var isActive = $(parent).hasClass(ClassName.OPEN); + + Dropdown._clearMenus(); + + if (isActive) { + return false; + } + + if ('ontouchstart' in document.documentElement && !$(parent).closest(Selector.NAVBAR_NAV).length) { + + // if mobile we use a backdrop because click events don't delegate + var dropdown = document.createElement('div'); + dropdown.className = ClassName.BACKDROP; + $(dropdown).insertBefore(this); + $(dropdown).on('click', Dropdown._clearMenus); + } + + var relatedTarget = { relatedTarget: this }; + var showEvent = $.Event(Event.SHOW, relatedTarget); + + $(parent).trigger(showEvent); + + if (showEvent.isDefaultPrevented()) { + return false; + } + + this.focus(); + this.setAttribute('aria-expanded', 'true'); + + $(parent).toggleClass(ClassName.OPEN); + $(parent).trigger($.Event(Event.SHOWN, relatedTarget)); + + return false; + } + }, { + key: 'dispose', + value: function dispose() { + $.removeData(this._element, DATA_KEY); + $(this._element).off(EVENT_KEY); + this._element = null; + } + + // private + + }, { + key: '_addEventListeners', + value: function _addEventListeners() { + $(this._element).on(Event.CLICK, this.toggle); + } + + // static + + }], [{ + key: '_jQueryInterface', + value: function _jQueryInterface(config) { + return this.each(function () { + var data = $(this).data(DATA_KEY); + + if (!data) { + $(this).data(DATA_KEY, data = new Dropdown(this)); + } + + if (typeof config === 'string') { + if (data[config] === undefined) { + throw new Error('No method named "' + config + '"'); + } + data[config].call(this); + } + }); + } + }, { + key: '_clearMenus', + value: function _clearMenus(event) { + if (event && event.which === 3) { + return; + } + + var backdrop = $(Selector.BACKDROP)[0]; + if (backdrop) { + backdrop.parentNode.removeChild(backdrop); + } + + var toggles = $.makeArray($(Selector.DATA_TOGGLE)); + + for (var i = 0; i < toggles.length; i++) { + var _parent = Dropdown._getParentFromElement(toggles[i]); + var relatedTarget = { relatedTarget: toggles[i] }; + + if (!$(_parent).hasClass(ClassName.OPEN)) { + continue; + } + + if (event && event.type === 'click' && /input|textarea/i.test(event.target.tagName) && $.contains(_parent, event.target)) { + continue; + } + + var hideEvent = $.Event(Event.HIDE, relatedTarget); + $(_parent).trigger(hideEvent); + if (hideEvent.isDefaultPrevented()) { + continue; + } + + toggles[i].setAttribute('aria-expanded', 'false'); + + $(_parent).removeClass(ClassName.OPEN).trigger($.Event(Event.HIDDEN, relatedTarget)); + } + } + }, { + key: '_getParentFromElement', + value: function _getParentFromElement(element) { + var parent = undefined; + var selector = _Util['default'].getSelectorFromElement(element); + + if (selector) { + parent = $(selector)[0]; + } + + return parent || element.parentNode; + } + }, { + key: '_dataApiKeydownHandler', + value: function _dataApiKeydownHandler(event) { + if (!/(38|40|27|32)/.test(event.which) || /input|textarea/i.test(event.target.tagName)) { + return; + } + + event.preventDefault(); + event.stopPropagation(); + + if (this.disabled || $(this).hasClass(ClassName.DISABLED)) { + return; + } + + var parent = Dropdown._getParentFromElement(this); + var isActive = $(parent).hasClass(ClassName.OPEN); + + if (!isActive && event.which !== 27 || isActive && event.which === 27) { + + if (event.which === 27) { + var toggle = $(parent).find(Selector.DATA_TOGGLE)[0]; + $(toggle).trigger('focus'); + } + + $(this).trigger('click'); + return; + } + + var items = $.makeArray($(Selector.VISIBLE_ITEMS)); + + items = items.filter(function (item) { + return item.offsetWidth || item.offsetHeight; + }); + + if (!items.length) { + return; + } + + var index = items.indexOf(event.target); + + if (event.which === 38 && index > 0) { + // up + index--; + } + + if (event.which === 40 && index < items.length - 1) { + // down + index++; + } + + if (! ~index) { + index = 0; + } + + items[index].focus(); + } + }, { + key: 'VERSION', + get: function get() { + return VERSION; + } + }]); + + return Dropdown; + })(); + + $(document).on(Event.KEYDOWN_DATA_API, Selector.DATA_TOGGLE, Dropdown._dataApiKeydownHandler).on(Event.KEYDOWN_DATA_API, Selector.ROLE_MENU, Dropdown._dataApiKeydownHandler).on(Event.KEYDOWN_DATA_API, Selector.ROLE_LISTBOX, Dropdown._dataApiKeydownHandler).on(Event.CLICK_DATA_API, Dropdown._clearMenus).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, Dropdown.prototype.toggle).on(Event.CLICK_DATA_API, Selector.FORM_CHILD, function (e) { + e.stopPropagation(); + }); + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = Dropdown._jQueryInterface; + $.fn[NAME].Constructor = Dropdown; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Dropdown._jQueryInterface; + }; + + return Dropdown; + })(jQuery); + + module.exports = Dropdown; +}); diff --git a/dist/js/umd/modal.js b/dist/js/umd/modal.js new file mode 100644 index 000000000..2cd16d5ed --- /dev/null +++ b/dist/js/umd/modal.js @@ -0,0 +1,555 @@ +(function (global, factory) { + if (typeof define === 'function' && define.amd) { + define(['exports', 'module', './util'], factory); + } else if (typeof exports !== 'undefined' && typeof module !== 'undefined') { + factory(exports, module, require('./util')); + } else { + var mod = { + exports: {} + }; + factory(mod.exports, mod, global.Util); + global.modal = mod.exports; + } +})(this, function (exports, module, _util) { + 'use strict'; + + var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + + var _Util = _interopRequireDefault(_util); + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0-alpha.2): modal.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + + var Modal = (function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'modal'; + var VERSION = '4.0.0-alpha'; + var DATA_KEY = 'bs.modal'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + var TRANSITION_DURATION = 300; + var BACKDROP_TRANSITION_DURATION = 150; + + var Default = { + backdrop: true, + keyboard: true, + focus: true, + show: true + }; + + var DefaultType = { + backdrop: '(boolean|string)', + keyboard: 'boolean', + focus: 'boolean', + show: 'boolean' + }; + + var Event = { + HIDE: 'hide' + EVENT_KEY, + HIDDEN: 'hidden' + EVENT_KEY, + SHOW: 'show' + EVENT_KEY, + SHOWN: 'shown' + EVENT_KEY, + FOCUSIN: 'focusin' + EVENT_KEY, + RESIZE: 'resize' + EVENT_KEY, + CLICK_DISMISS: 'click.dismiss' + EVENT_KEY, + KEYDOWN_DISMISS: 'keydown.dismiss' + EVENT_KEY, + MOUSEUP_DISMISS: 'mouseup.dismiss' + EVENT_KEY, + MOUSEDOWN_DISMISS: 'mousedown.dismiss' + EVENT_KEY, + CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY + }; + + var ClassName = { + SCROLLBAR_MEASURER: 'modal-scrollbar-measure', + BACKDROP: 'modal-backdrop', + OPEN: 'modal-open', + FADE: 'fade', + IN: 'in' + }; + + var Selector = { + DIALOG: '.modal-dialog', + DATA_TOGGLE: '[data-toggle="modal"]', + DATA_DISMISS: '[data-dismiss="modal"]', + FIXED_CONTENT: '.navbar-fixed-top, .navbar-fixed-bottom, .is-fixed' + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Modal = (function () { + function Modal(element, config) { + _classCallCheck(this, Modal); + + this._config = this._getConfig(config); + this._element = element; + this._dialog = $(element).find(Selector.DIALOG)[0]; + this._backdrop = null; + this._isShown = false; + this._isBodyOverflowing = false; + this._ignoreBackdropClick = false; + this._originalBodyPadding = 0; + this._scrollbarWidth = 0; + } + + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + // getters + + _createClass(Modal, [{ + key: 'toggle', + + // public + + value: function toggle(relatedTarget) { + return this._isShown ? this.hide() : this.show(relatedTarget); + } + }, { + key: 'show', + value: function show(relatedTarget) { + var _this = this; + + var showEvent = $.Event(Event.SHOW, { + relatedTarget: relatedTarget + }); + + $(this._element).trigger(showEvent); + + if (this._isShown || showEvent.isDefaultPrevented()) { + return; + } + + this._isShown = true; + + this._checkScrollbar(); + this._setScrollbar(); + + $(document.body).addClass(ClassName.OPEN); + + this._setEscapeEvent(); + this._setResizeEvent(); + + $(this._element).on(Event.CLICK_DISMISS, Selector.DATA_DISMISS, $.proxy(this.hide, this)); + + $(this._dialog).on(Event.MOUSEDOWN_DISMISS, function () { + $(_this._element).one(Event.MOUSEUP_DISMISS, function (event) { + if ($(event.target).is(_this._element)) { + _this._ignoreBackdropClick = true; + } + }); + }); + + this._showBackdrop($.proxy(this._showElement, this, relatedTarget)); + } + }, { + key: 'hide', + value: function hide(event) { + if (event) { + event.preventDefault(); + } + + var hideEvent = $.Event(Event.HIDE); + + $(this._element).trigger(hideEvent); + + if (!this._isShown || hideEvent.isDefaultPrevented()) { + return; + } + + this._isShown = false; + + this._setEscapeEvent(); + this._setResizeEvent(); + + $(document).off(Event.FOCUSIN); + + $(this._element).removeClass(ClassName.IN); + + $(this._element).off(Event.CLICK_DISMISS); + $(this._dialog).off(Event.MOUSEDOWN_DISMISS); + + if (_Util['default'].supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE)) { + + $(this._element).one(_Util['default'].TRANSITION_END, $.proxy(this._hideModal, this)).emulateTransitionEnd(TRANSITION_DURATION); + } else { + this._hideModal(); + } + } + }, { + key: 'dispose', + value: function dispose() { + $.removeData(this._element, DATA_KEY); + + $(window).off(EVENT_KEY); + $(document).off(EVENT_KEY); + $(this._element).off(EVENT_KEY); + $(this._backdrop).off(EVENT_KEY); + + this._config = null; + this._element = null; + this._dialog = null; + this._backdrop = null; + this._isShown = null; + this._isBodyOverflowing = null; + this._ignoreBackdropClick = null; + this._originalBodyPadding = null; + this._scrollbarWidth = null; + } + + // private + + }, { + key: '_getConfig', + value: function _getConfig(config) { + config = $.extend({}, Default, config); + _Util['default'].typeCheckConfig(NAME, config, DefaultType); + return config; + } + }, { + key: '_showElement', + value: function _showElement(relatedTarget) { + var _this2 = this; + + var transition = _Util['default'].supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE); + + if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) { + // don't move modals dom position + document.body.appendChild(this._element); + } + + this._element.style.display = 'block'; + this._element.scrollTop = 0; + + if (transition) { + _Util['default'].reflow(this._element); + } + + $(this._element).addClass(ClassName.IN); + + if (this._config.focus) { + this._enforceFocus(); + } + + var shownEvent = $.Event(Event.SHOWN, { + relatedTarget: relatedTarget + }); + + var transitionComplete = function transitionComplete() { + if (_this2._config.focus) { + _this2._element.focus(); + } + $(_this2._element).trigger(shownEvent); + }; + + if (transition) { + $(this._dialog).one(_Util['default'].TRANSITION_END, transitionComplete).emulateTransitionEnd(TRANSITION_DURATION); + } else { + transitionComplete(); + } + } + }, { + key: '_enforceFocus', + value: function _enforceFocus() { + var _this3 = this; + + $(document).off(Event.FOCUSIN) // guard against infinite focus loop + .on(Event.FOCUSIN, function (event) { + if (_this3._element !== event.target && !$(_this3._element).has(event.target).length) { + _this3._element.focus(); + } + }); + } + }, { + key: '_setEscapeEvent', + value: function _setEscapeEvent() { + var _this4 = this; + + if (this._isShown && this._config.keyboard) { + $(this._element).on(Event.KEYDOWN_DISMISS, function (event) { + if (event.which === 27) { + _this4.hide(); + } + }); + } else if (!this._isShown) { + $(this._element).off(Event.KEYDOWN_DISMISS); + } + } + }, { + key: '_setResizeEvent', + value: function _setResizeEvent() { + if (this._isShown) { + $(window).on(Event.RESIZE, $.proxy(this._handleUpdate, this)); + } else { + $(window).off(Event.RESIZE); + } + } + }, { + key: '_hideModal', + value: function _hideModal() { + var _this5 = this; + + this._element.style.display = 'none'; + this._showBackdrop(function () { + $(document.body).removeClass(ClassName.OPEN); + _this5._resetAdjustments(); + _this5._resetScrollbar(); + $(_this5._element).trigger(Event.HIDDEN); + }); + } + }, { + key: '_removeBackdrop', + value: function _removeBackdrop() { + if (this._backdrop) { + $(this._backdrop).remove(); + this._backdrop = null; + } + } + }, { + key: '_showBackdrop', + value: function _showBackdrop(callback) { + var _this6 = this; + + var animate = $(this._element).hasClass(ClassName.FADE) ? ClassName.FADE : ''; + + if (this._isShown && this._config.backdrop) { + var doAnimate = _Util['default'].supportsTransitionEnd() && animate; + + this._backdrop = document.createElement('div'); + this._backdrop.className = ClassName.BACKDROP; + + if (animate) { + $(this._backdrop).addClass(animate); + } + + $(this._backdrop).appendTo(document.body); + + $(this._element).on(Event.CLICK_DISMISS, function (event) { + if (_this6._ignoreBackdropClick) { + _this6._ignoreBackdropClick = false; + return; + } + if (event.target !== event.currentTarget) { + return; + } + if (_this6._config.backdrop === 'static') { + _this6._element.focus(); + } else { + _this6.hide(); + } + }); + + if (doAnimate) { + _Util['default'].reflow(this._backdrop); + } + + $(this._backdrop).addClass(ClassName.IN); + + if (!callback) { + return; + } + + if (!doAnimate) { + callback(); + return; + } + + $(this._backdrop).one(_Util['default'].TRANSITION_END, callback).emulateTransitionEnd(BACKDROP_TRANSITION_DURATION); + } else if (!this._isShown && this._backdrop) { + $(this._backdrop).removeClass(ClassName.IN); + + var callbackRemove = function callbackRemove() { + _this6._removeBackdrop(); + if (callback) { + callback(); + } + }; + + if (_Util['default'].supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE)) { + $(this._backdrop).one(_Util['default'].TRANSITION_END, callbackRemove).emulateTransitionEnd(BACKDROP_TRANSITION_DURATION); + } else { + callbackRemove(); + } + } else if (callback) { + callback(); + } + } + + // ---------------------------------------------------------------------- + // the following methods are used to handle overflowing modals + // todo (fat): these should probably be refactored out of modal.js + // ---------------------------------------------------------------------- + + }, { + key: '_handleUpdate', + value: function _handleUpdate() { + this._adjustDialog(); + } + }, { + key: '_adjustDialog', + value: function _adjustDialog() { + var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; + + if (!this._isBodyOverflowing && isModalOverflowing) { + this._element.style.paddingLeft = this._scrollbarWidth + 'px'; + } + + if (this._isBodyOverflowing && !isModalOverflowing) { + this._element.style.paddingRight = this._scrollbarWidth + 'px~'; + } + } + }, { + key: '_resetAdjustments', + value: function _resetAdjustments() { + this._element.style.paddingLeft = ''; + this._element.style.paddingRight = ''; + } + }, { + key: '_checkScrollbar', + value: function _checkScrollbar() { + var fullWindowWidth = window.innerWidth; + if (!fullWindowWidth) { + // workaround for missing window.innerWidth in IE8 + var documentElementRect = document.documentElement.getBoundingClientRect(); + fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left); + } + this._isBodyOverflowing = document.body.clientWidth < fullWindowWidth; + this._scrollbarWidth = this._getScrollbarWidth(); + } + }, { + key: '_setScrollbar', + value: function _setScrollbar() { + var bodyPadding = parseInt($(Selector.FIXED_CONTENT).css('padding-right') || 0, 10); + + this._originalBodyPadding = document.body.style.paddingRight || ''; + + if (this._isBodyOverflowing) { + document.body.style.paddingRight = bodyPadding + this._scrollbarWidth + 'px'; + } + } + }, { + key: '_resetScrollbar', + value: function _resetScrollbar() { + document.body.style.paddingRight = this._originalBodyPadding; + } + }, { + key: '_getScrollbarWidth', + value: function _getScrollbarWidth() { + // thx d.walsh + var scrollDiv = document.createElement('div'); + scrollDiv.className = ClassName.SCROLLBAR_MEASURER; + document.body.appendChild(scrollDiv); + var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth; + document.body.removeChild(scrollDiv); + return scrollbarWidth; + } + + // static + + }], [{ + key: '_jQueryInterface', + value: function _jQueryInterface(config, relatedTarget) { + return this.each(function () { + var data = $(this).data(DATA_KEY); + var _config = $.extend({}, Modal.Default, $(this).data(), typeof config === 'object' && config); + + if (!data) { + data = new Modal(this, _config); + $(this).data(DATA_KEY, data); + } + + if (typeof config === 'string') { + if (data[config] === undefined) { + throw new Error('No method named "' + config + '"'); + } + data[config](relatedTarget); + } else if (_config.show) { + data.show(relatedTarget); + } + }); + } + }, { + key: 'VERSION', + get: function get() { + return VERSION; + } + }, { + key: 'Default', + get: function get() { + return Default; + } + }]); + + return Modal; + })(); + + $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) { + var _this7 = this; + + var target = undefined; + var selector = _Util['default'].getSelectorFromElement(this); + + if (selector) { + target = $(selector)[0]; + } + + var config = $(target).data(DATA_KEY) ? 'toggle' : $.extend({}, $(target).data(), $(this).data()); + + if (this.tagName === 'A') { + event.preventDefault(); + } + + var $target = $(target).one(Event.SHOW, function (showEvent) { + if (showEvent.isDefaultPrevented()) { + // only register focus restorer if modal will actually get shown + return; + } + + $target.one(Event.HIDDEN, function () { + if ($(_this7).is(':visible')) { + _this7.focus(); + } + }); + }); + + Modal._jQueryInterface.call($(target), config, this); + }); + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = Modal._jQueryInterface; + $.fn[NAME].Constructor = Modal; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Modal._jQueryInterface; + }; + + return Modal; + })(jQuery); + + module.exports = Modal; +}); diff --git a/dist/js/umd/popover.js b/dist/js/umd/popover.js new file mode 100644 index 000000000..a1124ddbb --- /dev/null +++ b/dist/js/umd/popover.js @@ -0,0 +1,220 @@ +(function (global, factory) { + if (typeof define === 'function' && define.amd) { + define(['exports', 'module', './tooltip'], factory); + } else if (typeof exports !== 'undefined' && typeof module !== 'undefined') { + factory(exports, module, require('./tooltip')); + } else { + var mod = { + exports: {} + }; + factory(mod.exports, mod, global.Tooltip); + global.popover = mod.exports; + } +})(this, function (exports, module, _tooltip) { + 'use strict'; + + var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + + var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + + function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + + var _Tooltip2 = _interopRequireDefault(_tooltip); + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0-alpha.2): popover.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + + var Popover = (function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'popover'; + var VERSION = '4.0.0-alpha'; + var DATA_KEY = 'bs.popover'; + var EVENT_KEY = '.' + DATA_KEY; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + + var Default = $.extend({}, _Tooltip2['default'].Default, { + placement: 'right', + trigger: 'click', + content: '', + template: '' + '' + '' + '' + }); + + var DefaultType = $.extend({}, _Tooltip2['default'].DefaultType, { + content: '(string|element|function)' + }); + + var ClassName = { + FADE: 'fade', + IN: 'in' + }; + + var Selector = { + TITLE: '.popover-title', + CONTENT: '.popover-content', + ARROW: '.popover-arrow' + }; + + var Event = { + HIDE: 'hide' + EVENT_KEY, + HIDDEN: 'hidden' + EVENT_KEY, + SHOW: 'show' + EVENT_KEY, + SHOWN: 'shown' + EVENT_KEY, + INSERTED: 'inserted' + EVENT_KEY, + CLICK: 'click' + EVENT_KEY, + FOCUSIN: 'focusin' + EVENT_KEY, + FOCUSOUT: 'focusout' + EVENT_KEY, + MOUSEENTER: 'mouseenter' + EVENT_KEY, + MOUSELEAVE: 'mouseleave' + EVENT_KEY + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Popover = (function (_Tooltip) { + _inherits(Popover, _Tooltip); + + function Popover() { + _classCallCheck(this, Popover); + + _get(Object.getPrototypeOf(Popover.prototype), 'constructor', this).apply(this, arguments); + } + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + _createClass(Popover, [{ + key: 'isWithContent', + + // overrides + + value: function isWithContent() { + return this.getTitle() || this._getContent(); + } + }, { + key: 'getTipElement', + value: function getTipElement() { + return this.tip = this.tip || $(this.config.template)[0]; + } + }, { + key: 'setContent', + value: function setContent() { + var $tip = $(this.getTipElement()); + + // we use append for html objects to maintain js events + this.setElementContent($tip.find(Selector.TITLE), this.getTitle()); + this.setElementContent($tip.find(Selector.CONTENT), this._getContent()); + + $tip.removeClass(ClassName.FADE).removeClass(ClassName.IN); + + this.cleanupTether(); + } + + // private + + }, { + key: '_getContent', + value: function _getContent() { + return this.element.getAttribute('data-content') || (typeof this.config.content === 'function' ? this.config.content.call(this.element) : this.config.content); + } + + // static + + }], [{ + key: '_jQueryInterface', + value: function _jQueryInterface(config) { + return this.each(function () { + var data = $(this).data(DATA_KEY); + var _config = typeof config === 'object' ? config : null; + + if (!data && /destroy|hide/.test(config)) { + return; + } + + if (!data) { + data = new Popover(this, _config); + $(this).data(DATA_KEY, data); + } + + if (typeof config === 'string') { + if (data[config] === undefined) { + throw new Error('No method named "' + config + '"'); + } + data[config](); + } + }); + } + }, { + key: 'VERSION', + + // getters + + get: function get() { + return VERSION; + } + }, { + key: 'Default', + get: function get() { + return Default; + } + }, { + key: 'NAME', + get: function get() { + return NAME; + } + }, { + key: 'DATA_KEY', + get: function get() { + return DATA_KEY; + } + }, { + key: 'Event', + get: function get() { + return Event; + } + }, { + key: 'EVENT_KEY', + get: function get() { + return EVENT_KEY; + } + }, { + key: 'DefaultType', + get: function get() { + return DefaultType; + } + }]); + + return Popover; + })(_Tooltip2['default']); + + $.fn[NAME] = Popover._jQueryInterface; + $.fn[NAME].Constructor = Popover; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Popover._jQueryInterface; + }; + + return Popover; + })(jQuery); + + module.exports = Popover; +}); diff --git a/dist/js/umd/scrollspy.js b/dist/js/umd/scrollspy.js new file mode 100644 index 000000000..0d2c17a2a --- /dev/null +++ b/dist/js/umd/scrollspy.js @@ -0,0 +1,339 @@ +(function (global, factory) { + if (typeof define === 'function' && define.amd) { + define(['exports', 'module', './util'], factory); + } else if (typeof exports !== 'undefined' && typeof module !== 'undefined') { + factory(exports, module, require('./util')); + } else { + var mod = { + exports: {} + }; + factory(mod.exports, mod, global.Util); + global.scrollspy = mod.exports; + } +})(this, function (exports, module, _util) { + 'use strict'; + + var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + + var _Util = _interopRequireDefault(_util); + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0-alpha.2): scrollspy.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + + var ScrollSpy = (function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'scrollspy'; + var VERSION = '4.0.0-alpha'; + var DATA_KEY = 'bs.scrollspy'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + + var Default = { + offset: 10, + method: 'auto', + target: '' + }; + + var DefaultType = { + offset: 'number', + method: 'string', + target: '(string|element)' + }; + + var Event = { + ACTIVATE: 'activate' + EVENT_KEY, + SCROLL: 'scroll' + EVENT_KEY, + LOAD_DATA_API: 'load' + EVENT_KEY + DATA_API_KEY + }; + + var ClassName = { + DROPDOWN_ITEM: 'dropdown-item', + DROPDOWN_MENU: 'dropdown-menu', + NAV_LINK: 'nav-link', + NAV: 'nav', + ACTIVE: 'active' + }; + + var Selector = { + DATA_SPY: '[data-spy="scroll"]', + ACTIVE: '.active', + LIST_ITEM: '.list-item', + LI: 'li', + LI_DROPDOWN: 'li.dropdown', + NAV_LINKS: '.nav-link', + DROPDOWN: '.dropdown', + DROPDOWN_ITEMS: '.dropdown-item', + DROPDOWN_TOGGLE: '.dropdown-toggle' + }; + + var OffsetMethod = { + OFFSET: 'offset', + POSITION: 'position' + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var ScrollSpy = (function () { + function ScrollSpy(element, config) { + _classCallCheck(this, ScrollSpy); + + this._element = element; + this._scrollElement = element.tagName === 'BODY' ? window : element; + this._config = this._getConfig(config); + this._selector = this._config.target + ' ' + Selector.NAV_LINKS + ',' + (this._config.target + ' ' + Selector.DROPDOWN_ITEMS); + this._offsets = []; + this._targets = []; + this._activeTarget = null; + this._scrollHeight = 0; + + $(this._scrollElement).on(Event.SCROLL, $.proxy(this._process, this)); + + this.refresh(); + this._process(); + } + + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + // getters + + _createClass(ScrollSpy, [{ + key: 'refresh', + + // public + + value: function refresh() { + var _this = this; + + var autoMethod = this._scrollElement !== this._scrollElement.window ? OffsetMethod.POSITION : OffsetMethod.OFFSET; + + var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method; + + var offsetBase = offsetMethod === OffsetMethod.POSITION ? this._getScrollTop() : 0; + + this._offsets = []; + this._targets = []; + + this._scrollHeight = this._getScrollHeight(); + + var targets = $.makeArray($(this._selector)); + + targets.map(function (element) { + var target = undefined; + var targetSelector = _Util['default'].getSelectorFromElement(element); + + if (targetSelector) { + target = $(targetSelector)[0]; + } + + if (target && (target.offsetWidth || target.offsetHeight)) { + // todo (fat): remove sketch reliance on jQuery position/offset + return [$(target)[offsetMethod]().top + offsetBase, targetSelector]; + } + }).filter(function (item) { + return item; + }).sort(function (a, b) { + return a[0] - b[0]; + }).forEach(function (item) { + _this._offsets.push(item[0]); + _this._targets.push(item[1]); + }); + } + }, { + key: 'dispose', + value: function dispose() { + $.removeData(this._element, DATA_KEY); + $(this._scrollElement).off(EVENT_KEY); + + this._element = null; + this._scrollElement = null; + this._config = null; + this._selector = null; + this._offsets = null; + this._targets = null; + this._activeTarget = null; + this._scrollHeight = null; + } + + // private + + }, { + key: '_getConfig', + value: function _getConfig(config) { + config = $.extend({}, Default, config); + + if (typeof config.target !== 'string') { + var id = $(config.target).attr('id'); + if (!id) { + id = _Util['default'].getUID(NAME); + $(config.target).attr('id', id); + } + config.target = '#' + id; + } + + _Util['default'].typeCheckConfig(NAME, config, DefaultType); + + return config; + } + }, { + key: '_getScrollTop', + value: function _getScrollTop() { + return this._scrollElement === window ? this._scrollElement.scrollY : this._scrollElement.scrollTop; + } + }, { + key: '_getScrollHeight', + value: function _getScrollHeight() { + return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight); + } + }, { + key: '_process', + value: function _process() { + var scrollTop = this._getScrollTop() + this._config.offset; + var scrollHeight = this._getScrollHeight(); + var maxScroll = this._config.offset + scrollHeight - this._scrollElement.offsetHeight; + + if (this._scrollHeight !== scrollHeight) { + this.refresh(); + } + + if (scrollTop >= maxScroll) { + var target = this._targets[this._targets.length - 1]; + + if (this._activeTarget !== target) { + this._activate(target); + } + } + + if (this._activeTarget && scrollTop < this._offsets[0]) { + this._activeTarget = null; + this._clear(); + return; + } + + for (var i = this._offsets.length; i--;) { + var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (this._offsets[i + 1] === undefined || scrollTop < this._offsets[i + 1]); + + if (isActiveTarget) { + this._activate(this._targets[i]); + } + } + } + }, { + key: '_activate', + value: function _activate(target) { + this._activeTarget = target; + + this._clear(); + + var queries = this._selector.split(','); + queries = queries.map(function (selector) { + return selector + '[data-target="' + target + '"],' + (selector + '[href="' + target + '"]'); + }); + + var $link = $(queries.join(',')); + + if ($link.hasClass(ClassName.DROPDOWN_ITEM)) { + $link.closest(Selector.DROPDOWN).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE); + $link.addClass(ClassName.ACTIVE); + } else { + // todo (fat) this is kinda sus… + // recursively add actives to tested nav-links + $link.parents(Selector.LI).find(Selector.NAV_LINKS).addClass(ClassName.ACTIVE); + } + + $(this._scrollElement).trigger(Event.ACTIVATE, { + relatedTarget: target + }); + } + }, { + key: '_clear', + value: function _clear() { + $(this._selector).filter(Selector.ACTIVE).removeClass(ClassName.ACTIVE); + } + + // static + + }], [{ + key: '_jQueryInterface', + value: function _jQueryInterface(config) { + return this.each(function () { + var data = $(this).data(DATA_KEY); + var _config = typeof config === 'object' && config || null; + + if (!data) { + data = new ScrollSpy(this, _config); + $(this).data(DATA_KEY, data); + } + + if (typeof config === 'string') { + if (data[config] === undefined) { + throw new Error('No method named "' + config + '"'); + } + data[config](); + } + }); + } + }, { + key: 'VERSION', + get: function get() { + return VERSION; + } + }, { + key: 'Default', + get: function get() { + return Default; + } + }]); + + return ScrollSpy; + })(); + + $(window).on(Event.LOAD_DATA_API, function () { + var scrollSpys = $.makeArray($(Selector.DATA_SPY)); + + for (var i = scrollSpys.length; i--;) { + var $spy = $(scrollSpys[i]); + ScrollSpy._jQueryInterface.call($spy, $spy.data()); + } + }); + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = ScrollSpy._jQueryInterface; + $.fn[NAME].Constructor = ScrollSpy; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return ScrollSpy._jQueryInterface; + }; + + return ScrollSpy; + })(jQuery); + + module.exports = ScrollSpy; +}); diff --git a/dist/js/umd/tab.js b/dist/js/umd/tab.js new file mode 100644 index 000000000..7854b91e4 --- /dev/null +++ b/dist/js/umd/tab.js @@ -0,0 +1,282 @@ +(function (global, factory) { + if (typeof define === 'function' && define.amd) { + define(['exports', 'module', './util'], factory); + } else if (typeof exports !== 'undefined' && typeof module !== 'undefined') { + factory(exports, module, require('./util')); + } else { + var mod = { + exports: {} + }; + factory(mod.exports, mod, global.Util); + global.tab = mod.exports; + } +})(this, function (exports, module, _util) { + 'use strict'; + + var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + + var _Util = _interopRequireDefault(_util); + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0-alpha.2): tab.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + + var Tab = (function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'tab'; + var VERSION = '4.0.0-alpha'; + var DATA_KEY = 'bs.tab'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + var TRANSITION_DURATION = 150; + + var Event = { + HIDE: 'hide' + EVENT_KEY, + HIDDEN: 'hidden' + EVENT_KEY, + SHOW: 'show' + EVENT_KEY, + SHOWN: 'shown' + EVENT_KEY, + CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY + }; + + var ClassName = { + DROPDOWN_MENU: 'dropdown-menu', + ACTIVE: 'active', + FADE: 'fade', + IN: 'in' + }; + + var Selector = { + A: 'a', + LI: 'li', + DROPDOWN: '.dropdown', + UL: 'ul:not(.dropdown-menu)', + FADE_CHILD: '> .nav-item .fade, > .fade', + ACTIVE: '.active', + ACTIVE_CHILD: '> .nav-item > .active, > .active', + DATA_TOGGLE: '[data-toggle="tab"], [data-toggle="pill"]', + DROPDOWN_TOGGLE: '.dropdown-toggle', + DROPDOWN_ACTIVE_CHILD: '> .dropdown-menu .active' + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Tab = (function () { + function Tab(element) { + _classCallCheck(this, Tab); + + this._element = element; + } + + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + // getters + + _createClass(Tab, [{ + key: 'show', + + // public + + value: function show() { + var _this = this; + + if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && $(this._element).hasClass(ClassName.ACTIVE)) { + return; + } + + var target = undefined; + var previous = undefined; + var ulElement = $(this._element).closest(Selector.UL)[0]; + var selector = _Util['default'].getSelectorFromElement(this._element); + + if (ulElement) { + previous = $.makeArray($(ulElement).find(Selector.ACTIVE)); + previous = previous[previous.length - 1]; + } + + var hideEvent = $.Event(Event.HIDE, { + relatedTarget: this._element + }); + + var showEvent = $.Event(Event.SHOW, { + relatedTarget: previous + }); + + if (previous) { + $(previous).trigger(hideEvent); + } + + $(this._element).trigger(showEvent); + + if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) { + return; + } + + if (selector) { + target = $(selector)[0]; + } + + this._activate(this._element, ulElement); + + var complete = function complete() { + var hiddenEvent = $.Event(Event.HIDDEN, { + relatedTarget: _this._element + }); + + var shownEvent = $.Event(Event.SHOWN, { + relatedTarget: previous + }); + + $(previous).trigger(hiddenEvent); + $(_this._element).trigger(shownEvent); + }; + + if (target) { + this._activate(target, target.parentNode, complete); + } else { + complete(); + } + } + }, { + key: 'dispose', + value: function dispose() { + $.removeClass(this._element, DATA_KEY); + this._element = null; + } + + // private + + }, { + key: '_activate', + value: function _activate(element, container, callback) { + var active = $(container).find(Selector.ACTIVE_CHILD)[0]; + var isTransitioning = callback && _Util['default'].supportsTransitionEnd() && (active && $(active).hasClass(ClassName.FADE) || Boolean($(container).find(Selector.FADE_CHILD)[0])); + + var complete = $.proxy(this._transitionComplete, this, element, active, isTransitioning, callback); + + if (active && isTransitioning) { + $(active).one(_Util['default'].TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION); + } else { + complete(); + } + + if (active) { + $(active).removeClass(ClassName.IN); + } + } + }, { + key: '_transitionComplete', + value: function _transitionComplete(element, active, isTransitioning, callback) { + if (active) { + $(active).removeClass(ClassName.ACTIVE); + + var dropdownChild = $(active).find(Selector.DROPDOWN_ACTIVE_CHILD)[0]; + + if (dropdownChild) { + $(dropdownChild).removeClass(ClassName.ACTIVE); + } + + active.setAttribute('aria-expanded', false); + } + + $(element).addClass(ClassName.ACTIVE); + element.setAttribute('aria-expanded', true); + + if (isTransitioning) { + _Util['default'].reflow(element); + $(element).addClass(ClassName.IN); + } else { + $(element).removeClass(ClassName.FADE); + } + + if (element.parentNode && $(element.parentNode).hasClass(ClassName.DROPDOWN_MENU)) { + + var dropdownElement = $(element).closest(Selector.DROPDOWN)[0]; + if (dropdownElement) { + $(dropdownElement).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE); + } + + element.setAttribute('aria-expanded', true); + } + + if (callback) { + callback(); + } + } + + // static + + }], [{ + key: '_jQueryInterface', + value: function _jQueryInterface(config) { + return this.each(function () { + var $this = $(this); + var data = $this.data(DATA_KEY); + + if (!data) { + data = data = new Tab(this); + $this.data(DATA_KEY, data); + } + + if (typeof config === 'string') { + if (data[config] === undefined) { + throw new Error('No method named "' + config + '"'); + } + data[config](); + } + }); + } + }, { + key: 'VERSION', + get: function get() { + return VERSION; + } + }]); + + return Tab; + })(); + + $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) { + event.preventDefault(); + Tab._jQueryInterface.call($(this), 'show'); + }); + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = Tab._jQueryInterface; + $.fn[NAME].Constructor = Tab; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Tab._jQueryInterface; + }; + + return Tab; + })(jQuery); + + module.exports = Tab; +}); diff --git a/dist/js/umd/tooltip.js b/dist/js/umd/tooltip.js new file mode 100644 index 000000000..f1b5736b8 --- /dev/null +++ b/dist/js/umd/tooltip.js @@ -0,0 +1,638 @@ +(function (global, factory) { + if (typeof define === 'function' && define.amd) { + define(['exports', 'module', './util'], factory); + } else if (typeof exports !== 'undefined' && typeof module !== 'undefined') { + factory(exports, module, require('./util')); + } else { + var mod = { + exports: {} + }; + factory(mod.exports, mod, global.Util); + global.tooltip = mod.exports; + } +})(this, function (exports, module, _util) { + /* global Tether */ + + 'use strict'; + + var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + + var _Util = _interopRequireDefault(_util); + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0-alpha.2): tooltip.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + + var Tooltip = (function ($) { + + /** + * Check for Tether dependency + * Tether - http://github.hubspot.com/tether/ + */ + if (window.Tether === undefined) { + throw new Error('Bootstrap tooltips require Tether (http://github.hubspot.com/tether/)'); + } + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'tooltip'; + var VERSION = '4.0.0-alpha'; + var DATA_KEY = 'bs.tooltip'; + var EVENT_KEY = '.' + DATA_KEY; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + var TRANSITION_DURATION = 150; + var CLASS_PREFIX = 'bs-tether'; + + var Default = { + animation: true, + template: '' + '' + '', + trigger: 'hover focus', + title: '', + delay: 0, + html: false, + selector: false, + placement: 'top', + offset: '0 0', + constraints: [] + }; + + var DefaultType = { + animation: 'boolean', + template: 'string', + title: '(string|element|function)', + trigger: 'string', + delay: '(number|object)', + html: 'boolean', + selector: '(string|boolean)', + placement: '(string|function)', + offset: 'string', + constraints: 'array' + }; + + var AttachmentMap = { + TOP: 'bottom center', + RIGHT: 'middle left', + BOTTOM: 'top center', + LEFT: 'middle right' + }; + + var HoverState = { + IN: 'in', + OUT: 'out' + }; + + var Event = { + HIDE: 'hide' + EVENT_KEY, + HIDDEN: 'hidden' + EVENT_KEY, + SHOW: 'show' + EVENT_KEY, + SHOWN: 'shown' + EVENT_KEY, + INSERTED: 'inserted' + EVENT_KEY, + CLICK: 'click' + EVENT_KEY, + FOCUSIN: 'focusin' + EVENT_KEY, + FOCUSOUT: 'focusout' + EVENT_KEY, + MOUSEENTER: 'mouseenter' + EVENT_KEY, + MOUSELEAVE: 'mouseleave' + EVENT_KEY + }; + + var ClassName = { + FADE: 'fade', + IN: 'in' + }; + + var Selector = { + TOOLTIP: '.tooltip', + TOOLTIP_INNER: '.tooltip-inner' + }; + + var TetherClass = { + element: false, + enabled: false + }; + + var Trigger = { + HOVER: 'hover', + FOCUS: 'focus', + CLICK: 'click', + MANUAL: 'manual' + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Tooltip = (function () { + function Tooltip(element, config) { + _classCallCheck(this, Tooltip); + + // private + this._isEnabled = true; + this._timeout = 0; + this._hoverState = ''; + this._activeTrigger = {}; + this._tether = null; + + // protected + this.element = element; + this.config = this._getConfig(config); + this.tip = null; + + this._setListeners(); + } + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + // getters + + _createClass(Tooltip, [{ + key: 'enable', + + // public + + value: function enable() { + this._isEnabled = true; + } + }, { + key: 'disable', + value: function disable() { + this._isEnabled = false; + } + }, { + key: 'toggleEnabled', + value: function toggleEnabled() { + this._isEnabled = !this._isEnabled; + } + }, { + key: 'toggle', + value: function toggle(event) { + if (event) { + var dataKey = this.constructor.DATA_KEY; + var context = $(event.currentTarget).data(dataKey); + + if (!context) { + context = new this.constructor(event.currentTarget, this._getDelegateConfig()); + $(event.currentTarget).data(dataKey, context); + } + + context._activeTrigger.click = !context._activeTrigger.click; + + if (context._isWithActiveTrigger()) { + context._enter(null, context); + } else { + context._leave(null, context); + } + } else { + + if ($(this.getTipElement()).hasClass(ClassName.IN)) { + this._leave(null, this); + return; + } + + this._enter(null, this); + } + } + }, { + key: 'dispose', + value: function dispose() { + clearTimeout(this._timeout); + + this.cleanupTether(); + + $.removeData(this.element, this.constructor.DATA_KEY); + + $(this.element).off(this.constructor.EVENT_KEY); + + if (this.tip) { + $(this.tip).remove(); + } + + this._isEnabled = null; + this._timeout = null; + this._hoverState = null; + this._activeTrigger = null; + this._tether = null; + + this.element = null; + this.config = null; + this.tip = null; + } + }, { + key: 'show', + value: function show() { + var _this = this; + + var showEvent = $.Event(this.constructor.Event.SHOW); + + if (this.isWithContent() && this._isEnabled) { + $(this.element).trigger(showEvent); + + var isInTheDom = $.contains(this.element.ownerDocument.documentElement, this.element); + + if (showEvent.isDefaultPrevented() || !isInTheDom) { + return; + } + + var tip = this.getTipElement(); + var tipId = _Util['default'].getUID(this.constructor.NAME); + + tip.setAttribute('id', tipId); + this.element.setAttribute('aria-describedby', tipId); + + this.setContent(); + + if (this.config.animation) { + $(tip).addClass(ClassName.FADE); + } + + var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement; + + var attachment = this._getAttachment(placement); + + $(tip).data(this.constructor.DATA_KEY, this).appendTo(document.body); + + $(this.element).trigger(this.constructor.Event.INSERTED); + + this._tether = new Tether({ + attachment: attachment, + element: tip, + target: this.element, + classes: TetherClass, + classPrefix: CLASS_PREFIX, + offset: this.config.offset, + constraints: this.config.constraints, + addTargetClasses: false + }); + + _Util['default'].reflow(tip); + this._tether.position(); + + $(tip).addClass(ClassName.IN); + + var complete = function complete() { + var prevHoverState = _this._hoverState; + _this._hoverState = null; + + $(_this.element).trigger(_this.constructor.Event.SHOWN); + + if (prevHoverState === HoverState.OUT) { + _this._leave(null, _this); + } + }; + + if (_Util['default'].supportsTransitionEnd() && $(this.tip).hasClass(ClassName.FADE)) { + $(this.tip).one(_Util['default'].TRANSITION_END, complete).emulateTransitionEnd(Tooltip._TRANSITION_DURATION); + return; + } + + complete(); + } + } + }, { + key: 'hide', + value: function hide(callback) { + var _this2 = this; + + var tip = this.getTipElement(); + var hideEvent = $.Event(this.constructor.Event.HIDE); + var complete = function complete() { + if (_this2._hoverState !== HoverState.IN && tip.parentNode) { + tip.parentNode.removeChild(tip); + } + + _this2.element.removeAttribute('aria-describedby'); + $(_this2.element).trigger(_this2.constructor.Event.HIDDEN); + _this2.cleanupTether(); + + if (callback) { + callback(); + } + }; + + $(this.element).trigger(hideEvent); + + if (hideEvent.isDefaultPrevented()) { + return; + } + + $(tip).removeClass(ClassName.IN); + + if (_Util['default'].supportsTransitionEnd() && $(this.tip).hasClass(ClassName.FADE)) { + + $(tip).one(_Util['default'].TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION); + } else { + complete(); + } + + this._hoverState = ''; + } + + // protected + + }, { + key: 'isWithContent', + value: function isWithContent() { + return Boolean(this.getTitle()); + } + }, { + key: 'getTipElement', + value: function getTipElement() { + return this.tip = this.tip || $(this.config.template)[0]; + } + }, { + key: 'setContent', + value: function setContent() { + var $tip = $(this.getTipElement()); + + this.setElementContent($tip.find(Selector.TOOLTIP_INNER), this.getTitle()); + + $tip.removeClass(ClassName.FADE).removeClass(ClassName.IN); + + this.cleanupTether(); + } + }, { + key: 'setElementContent', + value: function setElementContent($element, content) { + var html = this.config.html; + if (typeof content === 'object' && (content.nodeType || content.jquery)) { + // content is a DOM node or a jQuery + if (html) { + if (!$(content).parent().is($element)) { + $element.empty().append(content); + } + } else { + $element.text($(content).text()); + } + } else { + $element[html ? 'html' : 'text'](content); + } + } + }, { + key: 'getTitle', + value: function getTitle() { + var title = this.element.getAttribute('data-original-title'); + + if (!title) { + title = typeof this.config.title === 'function' ? this.config.title.call(this.element) : this.config.title; + } + + return title; + } + }, { + key: 'cleanupTether', + value: function cleanupTether() { + if (this._tether) { + this._tether.destroy(); + } + } + + // private + + }, { + key: '_getAttachment', + value: function _getAttachment(placement) { + return AttachmentMap[placement.toUpperCase()]; + } + }, { + key: '_setListeners', + value: function _setListeners() { + var _this3 = this; + + var triggers = this.config.trigger.split(' '); + + triggers.forEach(function (trigger) { + if (trigger === 'click') { + $(_this3.element).on(_this3.constructor.Event.CLICK, _this3.config.selector, $.proxy(_this3.toggle, _this3)); + } else if (trigger !== Trigger.MANUAL) { + var eventIn = trigger === Trigger.HOVER ? _this3.constructor.Event.MOUSEENTER : _this3.constructor.Event.FOCUSIN; + var eventOut = trigger === Trigger.HOVER ? _this3.constructor.Event.MOUSELEAVE : _this3.constructor.Event.FOCUSOUT; + + $(_this3.element).on(eventIn, _this3.config.selector, $.proxy(_this3._enter, _this3)).on(eventOut, _this3.config.selector, $.proxy(_this3._leave, _this3)); + } + }); + + if (this.config.selector) { + this.config = $.extend({}, this.config, { + trigger: 'manual', + selector: '' + }); + } else { + this._fixTitle(); + } + } + }, { + key: '_fixTitle', + value: function _fixTitle() { + var titleType = typeof this.element.getAttribute('data-original-title'); + if (this.element.getAttribute('title') || titleType !== 'string') { + this.element.setAttribute('data-original-title', this.element.getAttribute('title') || ''); + this.element.setAttribute('title', ''); + } + } + }, { + key: '_enter', + value: function _enter(event, context) { + var dataKey = this.constructor.DATA_KEY; + + context = context || $(event.currentTarget).data(dataKey); + + if (!context) { + context = new this.constructor(event.currentTarget, this._getDelegateConfig()); + $(event.currentTarget).data(dataKey, context); + } + + if (event) { + context._activeTrigger[event.type === 'focusin' ? Trigger.FOCUS : Trigger.HOVER] = true; + } + + if ($(context.getTipElement()).hasClass(ClassName.IN) || context._hoverState === HoverState.IN) { + context._hoverState = HoverState.IN; + return; + } + + clearTimeout(context._timeout); + + context._hoverState = HoverState.IN; + + if (!context.config.delay || !context.config.delay.show) { + context.show(); + return; + } + + context._timeout = setTimeout(function () { + if (context._hoverState === HoverState.IN) { + context.show(); + } + }, context.config.delay.show); + } + }, { + key: '_leave', + value: function _leave(event, context) { + var dataKey = this.constructor.DATA_KEY; + + context = context || $(event.currentTarget).data(dataKey); + + if (!context) { + context = new this.constructor(event.currentTarget, this._getDelegateConfig()); + $(event.currentTarget).data(dataKey, context); + } + + if (event) { + context._activeTrigger[event.type === 'focusout' ? Trigger.FOCUS : Trigger.HOVER] = false; + } + + if (context._isWithActiveTrigger()) { + return; + } + + clearTimeout(context._timeout); + + context._hoverState = HoverState.OUT; + + if (!context.config.delay || !context.config.delay.hide) { + context.hide(); + return; + } + + context._timeout = setTimeout(function () { + if (context._hoverState === HoverState.OUT) { + context.hide(); + } + }, context.config.delay.hide); + } + }, { + key: '_isWithActiveTrigger', + value: function _isWithActiveTrigger() { + for (var trigger in this._activeTrigger) { + if (this._activeTrigger[trigger]) { + return true; + } + } + + return false; + } + }, { + key: '_getConfig', + value: function _getConfig(config) { + config = $.extend({}, this.constructor.Default, $(this.element).data(), config); + + if (config.delay && typeof config.delay === 'number') { + config.delay = { + show: config.delay, + hide: config.delay + }; + } + + _Util['default'].typeCheckConfig(NAME, config, this.constructor.DefaultType); + + return config; + } + }, { + key: '_getDelegateConfig', + value: function _getDelegateConfig() { + var config = {}; + + if (this.config) { + for (var key in this.config) { + if (this.constructor.Default[key] !== this.config[key]) { + config[key] = this.config[key]; + } + } + } + + return config; + } + + // static + + }], [{ + key: '_jQueryInterface', + value: function _jQueryInterface(config) { + return this.each(function () { + var data = $(this).data(DATA_KEY); + var _config = typeof config === 'object' ? config : null; + + if (!data && /destroy|hide/.test(config)) { + return; + } + + if (!data) { + data = new Tooltip(this, _config); + $(this).data(DATA_KEY, data); + } + + if (typeof config === 'string') { + if (data[config] === undefined) { + throw new Error('No method named "' + config + '"'); + } + data[config](); + } + }); + } + }, { + key: 'VERSION', + get: function get() { + return VERSION; + } + }, { + key: 'Default', + get: function get() { + return Default; + } + }, { + key: 'NAME', + get: function get() { + return NAME; + } + }, { + key: 'DATA_KEY', + get: function get() { + return DATA_KEY; + } + }, { + key: 'Event', + get: function get() { + return Event; + } + }, { + key: 'EVENT_KEY', + get: function get() { + return EVENT_KEY; + } + }, { + key: 'DefaultType', + get: function get() { + return DefaultType; + } + }]); + + return Tooltip; + })(); + + $.fn[NAME] = Tooltip._jQueryInterface; + $.fn[NAME].Constructor = Tooltip; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Tooltip._jQueryInterface; + }; + + return Tooltip; + })(jQuery); + + module.exports = Tooltip; +}); diff --git a/dist/js/umd/util.js b/dist/js/umd/util.js new file mode 100644 index 000000000..aabb874a5 --- /dev/null +++ b/dist/js/umd/util.js @@ -0,0 +1,172 @@ +(function (global, factory) { + if (typeof define === 'function' && define.amd) { + define(['exports', 'module'], factory); + } else if (typeof exports !== 'undefined' && typeof module !== 'undefined') { + factory(exports, module); + } else { + var mod = { + exports: {} + }; + factory(mod.exports, mod); + global.util = mod.exports; + } +})(this, function (exports, module) { + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0-alpha.2): util.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + + 'use strict'; + + var Util = (function ($) { + + /** + * ------------------------------------------------------------------------ + * Private TransitionEnd Helpers + * ------------------------------------------------------------------------ + */ + + var transition = false; + + var TransitionEndEvent = { + WebkitTransition: 'webkitTransitionEnd', + MozTransition: 'transitionend', + OTransition: 'oTransitionEnd otransitionend', + transition: 'transitionend' + }; + + // shoutout AngusCroll (https://goo.gl/pxwQGp) + function toType(obj) { + return ({}).toString.call(obj).match(/\s([a-zA-Z]+)/)[1].toLowerCase(); + } + + function isElement(obj) { + return (obj[0] || obj).nodeType; + } + + function getSpecialTransitionEndEvent() { + return { + bindType: transition.end, + delegateType: transition.end, + handle: function handle(event) { + if ($(event.target).is(this)) { + return event.handleObj.handler.apply(this, arguments); + } + } + }; + } + + function transitionEndTest() { + if (window.QUnit) { + return false; + } + + var el = document.createElement('bootstrap'); + + for (var _name in TransitionEndEvent) { + if (el.style[_name] !== undefined) { + return { end: TransitionEndEvent[_name] }; + } + } + + return false; + } + + function transitionEndEmulator(duration) { + var _this = this; + + var called = false; + + $(this).one(Util.TRANSITION_END, function () { + called = true; + }); + + setTimeout(function () { + if (!called) { + Util.triggerTransitionEnd(_this); + } + }, duration); + + return this; + } + + function setTransitionEndSupport() { + transition = transitionEndTest(); + + $.fn.emulateTransitionEnd = transitionEndEmulator; + + if (Util.supportsTransitionEnd()) { + $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent(); + } + } + + /** + * -------------------------------------------------------------------------- + * Public Util Api + * -------------------------------------------------------------------------- + */ + + var Util = { + + TRANSITION_END: 'bsTransitionEnd', + + getUID: function getUID(prefix) { + do { + prefix += ~ ~(Math.random() * 1000000); // "~~" acts like a faster Math.floor() here + } while (document.getElementById(prefix)); + return prefix; + }, + + getSelectorFromElement: function getSelectorFromElement(element) { + var selector = element.getAttribute('data-target'); + + if (!selector) { + selector = element.getAttribute('href') || ''; + selector = /^#[a-z]/i.test(selector) ? selector : null; + } + + return selector; + }, + + reflow: function reflow(element) { + new Function('bs', 'return bs')(element.offsetHeight); + }, + + triggerTransitionEnd: function triggerTransitionEnd(element) { + $(element).trigger(transition.end); + }, + + supportsTransitionEnd: function supportsTransitionEnd() { + return Boolean(transition); + }, + + typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) { + for (var property in configTypes) { + if (configTypes.hasOwnProperty(property)) { + var expectedTypes = configTypes[property]; + var value = config[property]; + var valueType = undefined; + + if (value && isElement(value)) { + valueType = 'element'; + } else { + valueType = toType(value); + } + + if (!new RegExp(expectedTypes).test(valueType)) { + throw new Error(componentName.toUpperCase() + ': ' + ('Option "' + property + '" provided type "' + valueType + '" ') + ('but expected type "' + expectedTypes + '".')); + } + } + } + } + }; + + setTransitionEndSupport(); + + return Util; + })(jQuery); + + module.exports = Util; +}); diff --git a/docs/CNAME b/docs/CNAME new file mode 100644 index 000000000..039362df6 --- /dev/null +++ b/docs/CNAME @@ -0,0 +1 @@ +v4-alpha.getbootstrap.com diff --git a/docs/LICENSE b/docs/LICENSE new file mode 100644 index 000000000..1d658d6d3 --- /dev/null +++ b/docs/LICENSE @@ -0,0 +1,319 @@ +Creative Commons Legal Code + +Attribution 3.0 Unported + + CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE + LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN + ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS + INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES + REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR + DAMAGES RESULTING FROM ITS USE. + +License + +THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE +COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY +COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS +AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED. + +BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE +TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY +BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS +CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND +CONDITIONS. + +1. Definitions + + a. "Adaptation" means a work based upon the Work, or upon the Work and + other pre-existing works, such as a translation, adaptation, + derivative work, arrangement of music or other alterations of a + literary or artistic work, or phonogram or performance and includes + cinematographic adaptations or any other form in which the Work may be + recast, transformed, or adapted including in any form recognizably + derived from the original, except that a work that constitutes a + Collection will not be considered an Adaptation for the purpose of + this License. For the avoidance of doubt, where the Work is a musical + work, performance or phonogram, the synchronization of the Work in + timed-relation with a moving image ("synching") will be considered an + Adaptation for the purpose of this License. + b. "Collection" means a collection of literary or artistic works, such as + encyclopedias and anthologies, or performances, phonograms or + broadcasts, or other works or subject matter other than works listed + in Section 1(f) below, which, by reason of the selection and + arrangement of their contents, constitute intellectual creations, in + which the Work is included in its entirety in unmodified form along + with one or more other contributions, each constituting separate and + independent works in themselves, which together are assembled into a + collective whole. A work that constitutes a Collection will not be + considered an Adaptation (as defined above) for the purposes of this + License. + c. "Distribute" means to make available to the public the original and + copies of the Work or Adaptation, as appropriate, through sale or + other transfer of ownership. + d. "Licensor" means the individual, individuals, entity or entities that + offer(s) the Work under the terms of this License. + e. "Original Author" means, in the case of a literary or artistic work, + the individual, individuals, entity or entities who created the Work + or if no individual or entity can be identified, the publisher; and in + addition (i) in the case of a performance the actors, singers, + musicians, dancers, and other persons who act, sing, deliver, declaim, + play in, interpret or otherwise perform literary or artistic works or + expressions of folklore; (ii) in the case of a phonogram the producer + being the person or legal entity who first fixes the sounds of a + performance or other sounds; and, (iii) in the case of broadcasts, the + organization that transmits the broadcast. + f. "Work" means the literary and/or artistic work offered under the terms + of this License including without limitation any production in the + literary, scientific and artistic domain, whatever may be the mode or + form of its expression including digital form, such as a book, + pamphlet and other writing; a lecture, address, sermon or other work + of the same nature; a dramatic or dramatico-musical work; a + choreographic work or entertainment in dumb show; a musical + composition with or without words; a cinematographic work to which are + assimilated works expressed by a process analogous to cinematography; + a work of drawing, painting, architecture, sculpture, engraving or + lithography; a photographic work to which are assimilated works + expressed by a process analogous to photography; a work of applied + art; an illustration, map, plan, sketch or three-dimensional work + relative to geography, topography, architecture or science; a + performance; a broadcast; a phonogram; a compilation of data to the + extent it is protected as a copyrightable work; or a work performed by + a variety or circus performer to the extent it is not otherwise + considered a literary or artistic work. + g. "You" means an individual or entity exercising rights under this + License who has not previously violated the terms of this License with + respect to the Work, or who has received express permission from the + Licensor to exercise rights under this License despite a previous + violation. + h. "Publicly Perform" means to perform public recitations of the Work and + to communicate to the public those public recitations, by any means or + process, including by wire or wireless means or public digital + performances; to make available to the public Works in such a way that + members of the public may access these Works from a place and at a + place individually chosen by them; to perform the Work to the public + by any means or process and the communication to the public of the + performances of the Work, including by public digital performance; to + broadcast and rebroadcast the Work by any means including signs, + sounds or images. + i. "Reproduce" means to make copies of the Work by any means including + without limitation by sound or visual recordings and the right of + fixation and reproducing fixations of the Work, including storage of a + protected performance or phonogram in digital form or other electronic + medium. + +2. Fair Dealing Rights. Nothing in this License is intended to reduce, +limit, or restrict any uses free from copyright or rights arising from +limitations or exceptions that are provided for in connection with the +copyright protection under copyright law or other applicable laws. + +3. License Grant. Subject to the terms and conditions of this License, +Licensor hereby grants You a worldwide, royalty-free, non-exclusive, +perpetual (for the duration of the applicable copyright) license to +exercise the rights in the Work as stated below: + + a. to Reproduce the Work, to incorporate the Work into one or more + Collections, and to Reproduce the Work as incorporated in the + Collections; + b. to create and Reproduce Adaptations provided that any such Adaptation, + including any translation in any medium, takes reasonable steps to + clearly label, demarcate or otherwise identify that changes were made + to the original Work. For example, a translation could be marked "The + original work was translated from English to Spanish," or a + modification could indicate "The original work has been modified."; + c. to Distribute and Publicly Perform the Work including as incorporated + in Collections; and, + d. to Distribute and Publicly Perform Adaptations. + e. For the avoidance of doubt: + + i. Non-waivable Compulsory License Schemes. In those jurisdictions in + which the right to collect royalties through any statutory or + compulsory licensing scheme cannot be waived, the Licensor + reserves the exclusive right to collect such royalties for any + exercise by You of the rights granted under this License; + ii. Waivable Compulsory License Schemes. In those jurisdictions in + which the right to collect royalties through any statutory or + compulsory licensing scheme can be waived, the Licensor waives the + exclusive right to collect such royalties for any exercise by You + of the rights granted under this License; and, + iii. Voluntary License Schemes. The Licensor waives the right to + collect royalties, whether individually or, in the event that the + Licensor is a member of a collecting society that administers + voluntary licensing schemes, via that society, from any exercise + by You of the rights granted under this License. + +The above rights may be exercised in all media and formats whether now +known or hereafter devised. The above rights include the right to make +such modifications as are technically necessary to exercise the rights in +other media and formats. Subject to Section 8(f), all rights not expressly +granted by Licensor are hereby reserved. + +4. Restrictions. The license granted in Section 3 above is expressly made +subject to and limited by the following restrictions: + + a. You may Distribute or Publicly Perform the Work only under the terms + of this License. You must include a copy of, or the Uniform Resource + Identifier (URI) for, this License with every copy of the Work You + Distribute or Publicly Perform. You may not offer or impose any terms + on the Work that restrict the terms of this License or the ability of + the recipient of the Work to exercise the rights granted to that + recipient under the terms of the License. You may not sublicense the + Work. You must keep intact all notices that refer to this License and + to the disclaimer of warranties with every copy of the Work You + Distribute or Publicly Perform. When You Distribute or Publicly + Perform the Work, You may not impose any effective technological + measures on the Work that restrict the ability of a recipient of the + Work from You to exercise the rights granted to that recipient under + the terms of the License. This Section 4(a) applies to the Work as + incorporated in a Collection, but this does not require the Collection + apart from the Work itself to be made subject to the terms of this + License. If You create a Collection, upon notice from any Licensor You + must, to the extent practicable, remove from the Collection any credit + as required by Section 4(b), as requested. If You create an + Adaptation, upon notice from any Licensor You must, to the extent + practicable, remove from the Adaptation any credit as required by + Section 4(b), as requested. + b. If You Distribute, or Publicly Perform the Work or any Adaptations or + Collections, You must, unless a request has been made pursuant to + Section 4(a), keep intact all copyright notices for the Work and + provide, reasonable to the medium or means You are utilizing: (i) the + name of the Original Author (or pseudonym, if applicable) if supplied, + and/or if the Original Author and/or Licensor designate another party + or parties (e.g., a sponsor institute, publishing entity, journal) for + attribution ("Attribution Parties") in Licensor's copyright notice, + terms of service or by other reasonable means, the name of such party + or parties; (ii) the title of the Work if supplied; (iii) to the + extent reasonably practicable, the URI, if any, that Licensor + specifies to be associated with the Work, unless such URI does not + refer to the copyright notice or licensing information for the Work; + and (iv) , consistent with Section 3(b), in the case of an Adaptation, + a credit identifying the use of the Work in the Adaptation (e.g., + "French translation of the Work by Original Author," or "Screenplay + based on original Work by Original Author"). The credit required by + this Section 4 (b) may be implemented in any reasonable manner; + provided, however, that in the case of a Adaptation or Collection, at + a minimum such credit will appear, if a credit for all contributing + authors of the Adaptation or Collection appears, then as part of these + credits and in a manner at least as prominent as the credits for the + other contributing authors. For the avoidance of doubt, You may only + use the credit required by this Section for the purpose of attribution + in the manner set out above and, by exercising Your rights under this + License, You may not implicitly or explicitly assert or imply any + connection with, sponsorship or endorsement by the Original Author, + Licensor and/or Attribution Parties, as appropriate, of You or Your + use of the Work, without the separate, express prior written + permission of the Original Author, Licensor and/or Attribution + Parties. + c. Except as otherwise agreed in writing by the Licensor or as may be + otherwise permitted by applicable law, if You Reproduce, Distribute or + Publicly Perform the Work either by itself or as part of any + Adaptations or Collections, You must not distort, mutilate, modify or + take other derogatory action in relation to the Work which would be + prejudicial to the Original Author's honor or reputation. Licensor + agrees that in those jurisdictions (e.g. Japan), in which any exercise + of the right granted in Section 3(b) of this License (the right to + make Adaptations) would be deemed to be a distortion, mutilation, + modification or other derogatory action prejudicial to the Original + Author's honor and reputation, the Licensor will waive or not assert, + as appropriate, this Section, to the fullest extent permitted by the + applicable national law, to enable You to reasonably exercise Your + right under Section 3(b) of this License (right to make Adaptations) + but not otherwise. + +5. Representations, Warranties and Disclaimer + +UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR +OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY +KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, +INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, +FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF +LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, +WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION +OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU. + +6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE +LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR +ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES +ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS +BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +7. Termination + + a. This License and the rights granted hereunder will terminate + automatically upon any breach by You of the terms of this License. + Individuals or entities who have received Adaptations or Collections + from You under this License, however, will not have their licenses + terminated provided such individuals or entities remain in full + compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will + survive any termination of this License. + b. Subject to the above terms and conditions, the license granted here is + perpetual (for the duration of the applicable copyright in the Work). + Notwithstanding the above, Licensor reserves the right to release the + Work under different license terms or to stop distributing the Work at + any time; provided, however that any such election will not serve to + withdraw this License (or any other license that has been, or is + required to be, granted under the terms of this License), and this + License will continue in full force and effect unless terminated as + stated above. + +8. Miscellaneous + + a. Each time You Distribute or Publicly Perform the Work or a Collection, + the Licensor offers to the recipient a license to the Work on the same + terms and conditions as the license granted to You under this License. + b. Each time You Distribute or Publicly Perform an Adaptation, Licensor + offers to the recipient a license to the original Work on the same + terms and conditions as the license granted to You under this License. + c. If any provision of this License is invalid or unenforceable under + applicable law, it shall not affect the validity or enforceability of + the remainder of the terms of this License, and without further action + by the parties to this agreement, such provision shall be reformed to + the minimum extent necessary to make such provision valid and + enforceable. + d. No term or provision of this License shall be deemed waived and no + breach consented to unless such waiver or consent shall be in writing + and signed by the party to be charged with such waiver or consent. + e. This License constitutes the entire agreement between the parties with + respect to the Work licensed here. There are no understandings, + agreements or representations with respect to the Work not specified + here. Licensor shall not be bound by any additional provisions that + may appear in any communication from You. This License may not be + modified without the mutual written agreement of the Licensor and You. + f. The rights granted under, and the subject matter referenced, in this + License were drafted utilizing the terminology of the Berne Convention + for the Protection of Literary and Artistic Works (as amended on + September 28, 1979), the Rome Convention of 1961, the WIPO Copyright + Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996 + and the Universal Copyright Convention (as revised on July 24, 1971). + These rights and subject matter take effect in the relevant + jurisdiction in which the License terms are sought to be enforced + according to the corresponding provisions of the implementation of + those treaty provisions in the applicable national law. If the + standard suite of rights granted under applicable copyright law + includes additional rights not granted under this License, such + additional rights are deemed to be included in the License; this + License is not intended to restrict the license of any rights under + applicable law. + + +Creative Commons Notice + + Creative Commons is not a party to this License, and makes no warranty + whatsoever in connection with the Work. Creative Commons will not be + liable to You or any party on any legal theory for any damages + whatsoever, including without limitation any general, special, + incidental or consequential damages arising in connection to this + license. Notwithstanding the foregoing two (2) sentences, if Creative + Commons has expressly identified itself as the Licensor hereunder, it + shall have all rights and obligations of Licensor. + + Except for the limited purpose of indicating to the public that the + Work is licensed under the CCPL, Creative Commons does not authorize + the use by either party of the trademark "Creative Commons" or any + related trademark or logo of Creative Commons without the prior + written consent of Creative Commons. Any permitted use will be in + compliance with Creative Commons' then-current trademark usage + guidelines, as may be published on its website or otherwise made + available upon request from time to time. For the avoidance of doubt, + this trademark restriction does not form part of this License. + + Creative Commons may be contacted at http://creativecommons.org/. diff --git a/docs/_data/browser-bugs.yml b/docs/_data/browser-bugs.yml new file mode 100644 index 000000000..d8bd36696 --- /dev/null +++ b/docs/_data/browser-bugs.yml @@ -0,0 +1,311 @@ +- + browser: > + Internet Explorer 11 & Microsoft Edge + summary: > + Hovered element still remains in `:hover` state after scrolling away. + upstream_bug: > + IE#926665 + origin: > + Bootstrap#14211 + +- + browser: > + Internet Explorer 11 & Microsoft Edge + summary: > + When hovering over a `` menu item, the cursor for the element underneath the menu is displayed. + upstream_bug: > + IE#963961 + origin: > + Bootstrap#14528 + +- + browser: > + Internet Explorer 11 & Microsoft Edge + summary: > + CSS `border-radius` sometimes causes lines of bleed-through of the `background-color` of the parent element. + upstream_bug: > + IE#1463734 + origin: > + Bootstrap#16671 + +- + browser: > + Firefox + summary: > + `.table-bordered` with an empty `` is missing borders. + upstream_bug: > + Mozilla#1023761 + origin: > + Bootstrap#13453 + +- + browser: > + Firefox + summary: > + `max-width: 100%;` doesn't work inside tables. + upstream_bug: > + Mozilla#975632 + origin: > + Bootstrap#10690 + +- + browser: > + Firefox + summary: > + Button elements with `width: 100%` become cropped in long tables. + upstream_bug: > + Mozilla#1060131 + origin: > + Bootstrap#14320 + +- + browser: > + Firefox + summary: > + If the disabled state of a form control is changed via JavaScript, the normal state doesn't return after refreshing the page. + upstream_bug: > + Mozilla#654072 + origin: > + Bootstrap#793 + +- + browser: > + Firefox + summary: > + `focus` events should not be fired at the `document` object + upstream_bug: > + Mozilla#1228802 + origin: > + Bootstrap#18365 + +- + browser: > + Firefox (Windows) + summary: > + Right border of `` menu is sometimes missing when screen is set to uncommon resolution + upstream_bug: > + Mozilla#1139853 + origin: > + Bootstrap#15990 + +- + browser: > + Chrome (OS X) + summary: > + Clicking above `` increment button flashes the decrement button. + upstream_bug: > + Chromium#419108 + origin: > + Offshoot of Bootstrap#8350 & Chromium#337668 + +- + browser: > + Chrome (OS X) + summary: > + Caps Lock indicator not shown in `` with `display: block` + upstream_bug: > + Chromium#460200 + origin: > + Bootstrap#15832 + +- + browser: > + Chrome + summary: > + Focus ring of image map within a modal is displayed in the wrong location. + upstream_bug: > + Chromium#475128 + origin: > + Bootstrap#16180 + +- + browser: > + Chrome + summary: > + Incorrect viewport size used for media queries when printing. + upstream_bug: > + Chromium#273306 + origin: > + Bootstrap#12078 + +- + browser: > + Chrome + summary: > + CSS infinite linear animation with alpha transparency leaks memory. + upstream_bug: > + Chromium#429375 + origin: > + Bootstrap#14409 + +- + browser: > + Chrome + summary: > + `:focus` `outline` style causes cursor to not be displayed when toggling a `readonly` `` to read-write. + upstream_bug: > + Chromium#465274 + origin: > + Bootstrap#16022 + +- + browser: > + Chrome + summary: > + `width: 1%` on nested table cell causes its table to hog horizontal space. + upstream_bug: > + Chromium#427994 + origin: > + Bootstrap#16372 + +- + browser: > + Chrome + summary: > + `table-cell` borders not overlapping despite `margin-right: -1px` + upstream_bug: > + Chromium#534750 + origin: > + Bootstrap#17438, Bootstrap#14237 + +- + browser: > + Chrome (Windows & Linux) + summary: > + Animation glitch when returning to inactive tab after animations occurred while tab was hidden. + upstream_bug: > + Chromium#449180 + origin: > + Bootstrap#15298 + +- + browser: > + Safari + summary: > + `width: 1%` on nested table cell causes its table to hog horizontal space. + upstream_bug: > + WebKit#144696, Safari#20839572 + origin: > + Bootstrap#16372 + +- + browser: > + Safari + summary: > + Incorrect placement of `position: fixed` element when it's a child of a `position: relative; left: X%;` element. + upstream_bug: > + WebKit#147284, Safari#21993128 + origin: > + Bootstrap#16814 + +- + browser: > + Safari (OS X) + summary: > + Scrollbar clipped in `select[multiple]` with padding. + upstream_bug: > + WebKit#128489, Safari#19208483 + origin: > + Bootstrap#12536 + +- + browser: > + Safari (OS X) + summary: > + Weird button behavior with some `` elements. + upstream_bug: > + WebKit#137269, Safari#18834768 + origin: > + Bootstrap#8350, + Normalize#283, + Chromium#337668 + +- + browser: > + Safari (OS X) + summary: > + Small font size when printing webpage with fixed-width `.container`. + upstream_bug: > + WebKit#138192, Safari#19435018 + origin: > + Bootstrap#14868 + +- + browser: > + Safari (OS X) + summary: > + Focus ring of image map within a modal is displayed in the wrong location. + upstream_bug: > + WebKit#143527, Safari#21908735 + origin: > + Bootstrap#16180 + +- + browser: > + Safari (iPad) + summary: > + `` menu on iPad causes shifting of hit-testing areas + upstream_bug: > + WebKit#150079, Safari#23082521 + origin: > + Bootstrap#14975 + +- + browser: > + Safari (iOS) + summary: > + `transform: translate3d(0,0,0);` rendering bug. + upstream_bug: > + WebKit#138162, Safari#18804973 + origin: > + Bootstrap#14603 + +- + browser: > + Safari (iOS) + summary: > + Text input's cursor doesn't move while scrolling the page. + upstream_bug: > + WebKit#138201, Safari#18819624 + origin: > + Bootstrap#14708 + +- + browser: > + Safari (iOS) + summary: > + Can't move cursor to start of text after entering long string of text into `` + upstream_bug: > + WebKit#148061, Safari#22299624 + origin: > + Bootstrap#16988 + +- + browser: > + Safari (iOS) + summary: > + `display: block` causes text of temporal ``s to become vertically misaligned + upstream_bug: > + WebKit#139848, Safari#19434878 + origin: > + Bootstrap#11266, Bootstrap#13098 + +- + browser: > + Safari (iOS) + summary: > + Tapping on `` doesn't fire `click` events + upstream_bug: > + WebKit#151933 + origin: > + Bootstrap#16028 + +- + browser: > + Safari (iOS 9+) + summary: > + Sometimes excessive automatic zoom is applied after opening a modal, and the user isn't allowed to zoom out + upstream_bug: > + WebKit#150715 + origin: > + WebKit#138201 diff --git a/docs/_data/core-team.yml b/docs/_data/core-team.yml new file mode 100644 index 000000000..2b3fd9ac6 --- /dev/null +++ b/docs/_data/core-team.yml @@ -0,0 +1,35 @@ +- name: Mark Otto + user: mdo + gravatar: bc4ab438f7a4ce1c406aadc688427f2c + +- name: Jacob Thornton + user: fat + gravatar: a98244cbdacaf1c0b55499466002f7a8 + +- name: Chris Rebert + user: cvrebert + gravatar: edec428c425453955f770095a7d26c50 + +- name: Julian Thilo + user: juthilo + gravatar: 0f7dd3ce58a416be5685ea6194f82b11 + +- name: XhmikosR + user: xhmikosr + gravatar: e37759b1ea0125d4e97b1e00b5eed26f + +- name: Heinrich Fenkart + user: hnrch02 + gravatar: 0d53f5d3d3d28bd470f394d98f7ef48f + +- name: Patrick H. Lauke + user: patrickhlauke + gravatar: 357f279672db832fc41a5a2f36559fcb + +- name: Thomas McDonald + user: thomas-mcdonald + gravatar: 24cd55ab1a62ffb113ab8c02f64c9301 + +- name: Gleb Mazovetskiy + user: glebm + gravatar: 729f685b8e8d7e9feed18c177c82e59b diff --git a/docs/_data/nav.yml b/docs/_data/nav.yml new file mode 100644 index 000000000..dac90c0d8 --- /dev/null +++ b/docs/_data/nav.yml @@ -0,0 +1,67 @@ +- title: Getting started + pages: + - title: Introduction + - title: Download + - title: Browsers & devices + - title: Options + - title: Flexbox + - title: Build tools + - title: Best practices + +- title: Layout + pages: + - title: Overview + - title: Grid + - title: Media object + - title: Responsive utilities + +- title: Content + pages: + - title: Reboot + - title: Typography + - title: Code + - title: Images + - title: Tables + - title: Figures + +- title: Components + pages: + - title: Buttons + - title: Button group + - title: Button dropdown + - title: Forms + - title: Input group + - title: Dropdowns + - title: Jumbotron + - title: Label + - title: Alerts + - title: Card + - title: Navs + - title: Navbar + - title: Breadcrumb + - title: Pagination + - title: Progress + - title: List group + - title: Modal + - title: Scrollspy + - title: Tooltips + - title: Popovers + - title: Collapse + - title: Carousel + - title: Utilities + +# - title: Extend +# pages: +# - title: Approach +# - title: Icon fonts + +- title: About + pages: + - title: History + - title: Team + - title: Accessibility + - title: Brand + - title: License + - title: Translations + +- title: Migration diff --git a/docs/_data/showcase.yml b/docs/_data/showcase.yml new file mode 100644 index 000000000..45e9b0ccc --- /dev/null +++ b/docs/_data/showcase.yml @@ -0,0 +1,19 @@ +- name: Lyft + url: https://www.lyft.com + expo_url: http://expo.getbootstrap.com/2014/10/29/lyft/ + img: lyft + +- name: Vogue + url: http://www.vogue.com + expo_url: http://expo.getbootstrap.com/2014/09/30/vogue/ + img: vogue + +- name: Riot Design + url: http://riotdesign.eu/en/ + expo_url: http://expo.getbootstrap.com/2014/03/13/riot-design/ + img: riot + +- name: Newsweek + url: http://www.newsweek.com/ + expo_url: http://expo.getbootstrap.com/2014/02/12/newsweek/ + img: newsweek diff --git a/docs/_data/translations.yml b/docs/_data/translations.yml new file mode 100644 index 000000000..57bf28f50 --- /dev/null +++ b/docs/_data/translations.yml @@ -0,0 +1,9 @@ +- name: Chinese + code: zh + description: Bootstrap 中文文档 + url: http://v4.bootcss.com/ + +- name: Chinese + code: zh + description: Bootstrap 4 中文文档教程 + url: http://boot4.com/ diff --git a/docs/_includes/ads.html b/docs/_includes/ads.html new file mode 100644 index 000000000..ba4775f5e --- /dev/null +++ b/docs/_includes/ads.html @@ -0,0 +1 @@ + diff --git a/docs/_includes/footer.html b/docs/_includes/footer.html new file mode 100644 index 000000000..7bcaa3983 --- /dev/null +++ b/docs/_includes/footer.html @@ -0,0 +1,58 @@ + + + + + + + +{% if site.github %} + +{% else %} + +{% endif %} + +{% if site.github %} + +{% else %} + {% for file in site.data.configBridge.paths.docsJs %} + + {% endfor %} +{% endif %} + + + + + +{% if page.layout == "docs" %} + + + +{% endif %} + + diff --git a/docs/_includes/header.html b/docs/_includes/header.html new file mode 100644 index 000000000..e7ecb12ab --- /dev/null +++ b/docs/_includes/header.html @@ -0,0 +1,37 @@ + + + + + + + + + {% if page.layout == "home" %} + {{ page.title }} + {% else %} + {{ page.title }} · Bootstrap + {% endif %} + + + +{% if site.github %} + +{% else %} + +{% endif %} + + + + + + + + + diff --git a/docs/_includes/nav-docs.html b/docs/_includes/nav-docs.html new file mode 100644 index 000000000..7d74f5352 --- /dev/null +++ b/docs/_includes/nav-docs.html @@ -0,0 +1,60 @@ + + + + + + + + + {% for group in site.data.nav %} + {% assign link = group.pages | first %} + {% assign slug = group.title | downcase | replace: ' ', '-' || page.title | downcase | replace: ' ', '-' %} + {% assign active = nil %} + + {% if page.url contains slug %} + {% assign active = 'active' %} + {% endif %} + + + {% if slug == "examples" %} + + {% else %} + + {% endif %} + {{ group.title }} + + + + {% for doc in group.pages %} + {% assign slug = doc.title | downcase | replace: ' ', '-' | replace:'-&-','-' %} + {% assign active = nil %} + + {% if page.url contains slug %} + {% assign active = 'active bd-sidenav-active' %} + {% endif %} + + + + {{ doc.title }} + + + {% comment %} + {% unless doc.sections == nil %} + + {% for section in doc.sections %} + + + {{ section.title }} + + + {% endfor %} + + {% endunless %} + {% endcomment %} + + {% endfor %} + + + {% endfor %} + + diff --git a/docs/_includes/nav-home.html b/docs/_includes/nav-home.html new file mode 100644 index 000000000..5b7e9bf7b --- /dev/null +++ b/docs/_includes/nav-home.html @@ -0,0 +1,45 @@ + + {% comment %} + + + + v{{ site.current_version }} + + + v4.0.0-alpha.2 + v3.3.5 + v3.3.4 + v3.3.2 + v3.3.1 + v3.3.0 + v3.2.0 + v3.1.1 + v3.1.0 + v3.0.3 + v3.0.2 + v3.0.1 + v3.0.0 + + + + {% endcomment %} + + + + ☰ + + + Bootstrap + + + + + Bootstrap + Documentation + Examples + Themes + Expo + Blog + + + diff --git a/docs/_includes/page-headers.html b/docs/_includes/page-headers.html new file mode 100644 index 000000000..26f5f95b1 --- /dev/null +++ b/docs/_includes/page-headers.html @@ -0,0 +1,41 @@ +{% if page.group == "getting-started" %} + Getting started + + An overview of Bootstrap, including how to download and use it, some basic templates and examples, and more. + +{% elsif page.group == "layout" %} + Layout + + Options for structuring your pages with Bootstrap, including global styles, required scaffolding, grid system, and more. + +{% elsif page.group == "content" %} + Content + + Styles for displaying content with some of the most commonly used HTML elements, including normalization, typography, images, tables, and more. + +{% elsif page.group == "components" %} + Components + + Over a dozen reusable components built to provide buttons, dropdowns, input groups, navigation, alerts, and much more. + +{% elsif page.group == "javascript" %} + JavaScript plugins + + Bring Bootstrap's components to life with over a dozen custom jQuery plugins. Easily include them all, or one by one. + +{% elsif page.group == "about" %} + About + + Learn about the project's history, meet the maintaining teams, and find out how to use the Bootstrap brand. + +{% elsif page.group == "migration" %} + Migration + + Guidance on how to upgrade from Bootstrap v3.x to v4.x with emphasis on major changes, what's new, and what's been removed. + +{% elsif page.group == "browser-bugs" %} + Wall of browser bugs + + A list of the browser bugs that Bootstrap is currently grappling with. + +{% endif %} diff --git a/docs/_layouts/default.html b/docs/_layouts/default.html new file mode 100644 index 000000000..dab3d5665 --- /dev/null +++ b/docs/_layouts/default.html @@ -0,0 +1,21 @@ + + + + {% include header.html %} + + + + + Skip to main content + + + + {% include nav-home.html %} + + + {{ content }} + + + {% include footer.html %} + + diff --git a/docs/_layouts/docs.html b/docs/_layouts/docs.html new file mode 100644 index 000000000..fc47e6f40 --- /dev/null +++ b/docs/_layouts/docs.html @@ -0,0 +1,36 @@ + + + + {% include header.html %} + + + + + Skip to main content + + + + {% include nav-home.html %} + + + + {% include page-headers.html %} + {% include ads.html %} + + + + + + + {% include nav-docs.html %} + + + {{ page.title }} + {{ content }} + + + + + {% include footer.html %} + + diff --git a/docs/_layouts/home.html b/docs/_layouts/home.html new file mode 100644 index 000000000..788ecf1dd --- /dev/null +++ b/docs/_layouts/home.html @@ -0,0 +1,19 @@ + + + + {% include header.html %} + + + + + Skip to main content + + + + {% include nav-home.html %} + + {{ content }} + + {% include footer.html %} + + diff --git a/docs/_layouts/simple.html b/docs/_layouts/simple.html new file mode 100644 index 000000000..df9bb6048 --- /dev/null +++ b/docs/_layouts/simple.html @@ -0,0 +1,17 @@ +--- +layout: default +--- + + + + {{ page.title }} + + Quickly get a project started with any of our examples ranging from using parts of the framework to custom components and layouts. + + {% include ads.html %} + + + + + {{ content }} + diff --git a/docs/_plugins/bridge.rb b/docs/_plugins/bridge.rb new file mode 100644 index 000000000..69a13fbbb --- /dev/null +++ b/docs/_plugins/bridge.rb @@ -0,0 +1,10 @@ +require 'yaml' + +module Bridge + class Generator < Jekyll::Generator + def generate(site) + path = File.join(site.source, "../grunt/configBridge.json") + site.data["configBridge"] = YAML.load_file(path) + end + end +end diff --git a/docs/_plugins/bugify.rb b/docs/_plugins/bugify.rb new file mode 100644 index 000000000..e085b5a38 --- /dev/null +++ b/docs/_plugins/bugify.rb @@ -0,0 +1,25 @@ +module Jekyll + module BugFilter + def bugify(input) + upstream_map = { + "Bootstrap" => "https://github.com/twbs/bootstrap/issues/", + "IE" => ["https://connect.microsoft.com/IE/feedback/details/", "IE bug"], + "Mozilla" => ["https://bugzilla.mozilla.org/show_bug.cgi?id=", "Mozilla bug"], + "Chromium" => ["https://code.google.com/p/chromium/issues/detail?id=", "Chromium issue"], + "WebKit" => ["https://bugs.webkit.org/show_bug.cgi?id=", "WebKit bug"], + "Safari" => ["https://openradar.appspot.com/", "Apple Safari Radar"], + "Normalize" => ["https://github.com/necolas/normalize.css/issues/", "Normalize"] + } + + upstream_map.each do |key, data| + url = data.is_a?(Array) ? data[0] : data + label = data.is_a?(Array) ? "#{data[1]} " : "" + input = input.gsub(/#{key}#(\d+)/, "#{label}#\\1") + end + + return input + end + end +end + +Liquid::Template.register_filter(Jekyll::BugFilter) diff --git a/docs/_plugins/callout.rb b/docs/_plugins/callout.rb new file mode 100644 index 000000000..58453ecb4 --- /dev/null +++ b/docs/_plugins/callout.rb @@ -0,0 +1,28 @@ +# Source: https://stackoverflow.com/questions/19169849/how-to-get-markdown-processed-content-in-jekyll-tag-plugin + +module Jekyll + module Tags + class CalloutTag < Liquid::Block + + def initialize(tag_name, type, tokens) + super + type.strip! + if %w(info danger warning).include?(type) + @type = type + else + puts "#{type} callout not supported. Defaulting to info" + @type = "info" + end + end + + def render(context) + site = context.registers[:site] + converter = site.find_converter_instance(::Jekyll::Converters::Markdown) + output = converter.convert(super(context)) + "#{output}" + end + end + end +end + +Liquid::Template.register_tag('callout', Jekyll::Tags::CalloutTag) diff --git a/docs/_plugins/highlight_alt.rb b/docs/_plugins/highlight_alt.rb new file mode 100644 index 000000000..1fc9f5d2a --- /dev/null +++ b/docs/_plugins/highlight_alt.rb @@ -0,0 +1,85 @@ +module Jekyll + module Tags + class ExampleBlock < Liquid::Block + include Liquid::StandardFilters + + # The regular expression syntax checker. Start with the language specifier. + # Follow that by zero or more space separated options that take one of three + # forms: name, name=value, or name="" + # + # is a space-separated list of numbers + SYNTAX = /^([a-zA-Z0-9.+#-]+)((\s+\w+(=((\w|[0-9_-])+|"([0-9]+\s)*[0-9]+"))?)*)$/ + + def initialize(tag_name, markup, tokens) + super + if markup.strip =~ SYNTAX + @lang = $1.downcase + @options = {} + if defined?($2) && $2 != '' + # Split along 3 possible forms -- key="", key=value, or key + $2.scan(/(?:\w+(?:=(?:(?:\w|[0-9_-])+|"[^"]*")?)?)/) do |opt| + key, value = opt.split('=') + # If a quoted list, convert to array + if value && value.include?("\"") + value.gsub!(/"/, "") + value = value.split + end + @options[key.to_sym] = value || true + end + end + @options[:linenos] = "inline" if @options.key?(:linenos) and @options[:linenos] == true + else + raise SyntaxError.new <<-eos +Syntax Error in tag 'highlight' while parsing the following markup: + + #{markup} + +Valid syntax: highlight [linenos] +eos + end + end + + def render(context) + prefix = context["highlighter_prefix"] || "" + suffix = context["highlighter_suffix"] || "" + code = super.to_s.strip + + output = case context.registers[:site].highlighter + + when 'rouge' + render_rouge(code) + end + + rendered_output = example(code) + add_code_tag(output) + prefix + rendered_output + suffix + end + + def example(output) + "\n#{output}\n" + end + + def remove_holderjs(code) + code = code.gsub(/"holder.js.+?"/, '"..."') + end + + def render_rouge(code) + require 'rouge' + formatter = Rouge::Formatters::HTML.new(line_numbers: @options[:linenos], wrap: false) + lexer = Rouge::Lexer.find_fancy(@lang, code) || Rouge::Lexers::PlainText + code = remove_holderjs(code) + code = formatter.format(lexer.lex(code)) + "#{code}" + end + + def add_code_tag(code) + # Add nested tags to code blocks + code = code.sub(/\n*/,'') + code = code.sub(/\n*<\/pre>/,"") + code.strip + end + + end + end +end + +Liquid::Template.register_tag('example', Jekyll::Tags::ExampleBlock) diff --git a/docs/_plugins/markdown-block.rb b/docs/_plugins/markdown-block.rb new file mode 100644 index 000000000..f9f1531b5 --- /dev/null +++ b/docs/_plugins/markdown-block.rb @@ -0,0 +1,20 @@ +module Jekyll + class MarkdownBlock < Liquid::Block + alias_method :render_block, :render + + def initialize(tag_name, markup, tokens) + super + end + + # Uses the default Jekyll markdown parser to + # parse the contents of this block + # + def render(context) + site = context.registers[:site] + converter = site.find_converter_instance(::Jekyll::Converters::Markdown) + converter.convert(render_block(context)) + end + end +end + +Liquid::Template.register_tag('markdown', Jekyll::MarkdownBlock) diff --git a/docs/about/brand.md b/docs/about/brand.md new file mode 100644 index 000000000..fcb8804ae --- /dev/null +++ b/docs/about/brand.md @@ -0,0 +1,76 @@ +--- +layout: docs +title: Brand guidelines +group: about +--- + +Have a need for Bootstrap's brand resources? Great! We have only a few guidelines we follow, and in turn ask you to follow as well. These guidelines were inspired by MailChimp's [Brand Assets](http://mailchimp.com/about/brand-assets/). + +## Mark and logo + +Use either the Bootstrap mark (a capital **B**) or the standard logo (just **Bootstrap**). It should always appear in Helvetica Neue Bold. **Do not use the Twitter bird** in association with Bootstrap. + + + + B + + + B + + + + + Bootstrap + + + Bootstrap + + + +## Download mark + +Download the Bootstrap mark in one of three styles, each available as an SVG file. Right click, Save as. + + + + + + + + + + + + + +## Name + +The project and framework should always be referred to as **Bootstrap**. No Twitter before it, no capital _s_, and no abbreviations except for one, a capital **B**. + + + + Bootstrap + Right + + + BootStrap + Wrong + + + Twitter Bootstrap + Wrong + + + +## Colors + +Our docs and branding use a handful of primary colors to differentiate what *is* Bootstrap from what *is in* Bootstrap. In other words, if it's purple, it's representative of Bootstrap. + + + + + + + + + diff --git a/docs/about/history.md b/docs/about/history.md new file mode 100644 index 000000000..ae4764ee7 --- /dev/null +++ b/docs/about/history.md @@ -0,0 +1,12 @@ +--- +layout: docs +title: History +group: about +redirect_from: "/about/" +--- + +Originally created by a designer and a developer at Twitter, Bootstrap has become one of the most popular front-end frameworks and open source projects in the world. + +Bootstrap was created at Twitter in mid-2010 by [@mdo](https://twitter.com/mdo) and [@fat](https://twitter.com/fat). Prior to being an open-sourced framework, Bootstrap was known as _Twitter Blueprint_. A few months into development, Twitter held its [first Hack Week](https://blog.twitter.com/2010/hack-week) and the project exploded as developers of all skill levels jumped in without any external guidance. It served as the style guide for internal tools development at the company for over a year before its public release, and continues to do so today. + +Originally [released](https://blog.twitter.com/2011/bootstrap-twitter) on [Friday, August 19, 2011](https://twitter.com/mdo/statuses/104620039650557952), we've since had over [twenty releases](https://github.com/twbs/bootstrap/releases), including two major rewrites with v2 and v3. With Bootstrap 2, we added responsive functionality to the entire framework as an optional stylesheet. Building on that with Bootstrap 3, we rewrote the library once more to make it responsive by default with a mobile first approach. diff --git a/site/content/docs/5.0/about/license.md b/docs/about/license.md similarity index 71% rename from site/content/docs/5.0/about/license.md rename to docs/about/license.md index 07e60e00a..997b1c9ef 100644 --- a/site/content/docs/5.0/about/license.md +++ b/docs/about/license.md @@ -1,24 +1,23 @@ --- layout: docs title: License FAQs -description: Commonly asked questions about Bootstrap's open source license. group: about --- -Bootstrap is released under the MIT license and is copyright {{< year >}} Twitter. Boiled down to smaller chunks, it can be described with the following conditions. +Bootstrap is released under the MIT license and is copyright {{ site.time | date: "%Y" }} Twitter. Boiled down to smaller chunks, it can be described with the following conditions. -## It requires you to: +#### It requires you to: -- Keep the license and copyright notice included in Bootstrap's CSS and JavaScript files when you use them in your works +* Keep the license and copyright notice included in Bootstrap's CSS and JavaScript files when you use them in your works -## It permits you to: +#### It permits you to: - Freely download and use Bootstrap, in whole or in part, for personal, private, company internal, or commercial purposes - Use Bootstrap in packages or distributions that you create - Modify the source code - Grant a sublicense to modify and distribute Bootstrap to third parties not included in the license -## It forbids you to: +#### It forbids you to: - Hold the authors and license owners liable for damages as Bootstrap is provided without warranty - Hold the creators or copyright holders of Bootstrap liable @@ -26,9 +25,9 @@ Bootstrap is released under the MIT license and is copyright {{< year >}} Twitte - Use any marks owned by Twitter in any way that might state or imply that Twitter endorses your distribution - Use any marks owned by Twitter in any way that might state or imply that you created the Twitter software in question -## It does not require you to: +#### It does not require you to: - Include the source of Bootstrap itself, or of any modifications you may have made to it, in any redistribution you may assemble that includes it - Submit changes that you make to Bootstrap back to the Bootstrap project (though such feedback is encouraged) -The full Bootstrap license is located [in the project repository]({{< param repo >}}/blob/v{{< param current_version >}}/LICENSE) for more information. +The full Bootstrap license is located [in the project repository]({{ site.repo }}/blob/master/LICENSE) for more information. diff --git a/docs/about/team.md b/docs/about/team.md new file mode 100644 index 000000000..2492471cf --- /dev/null +++ b/docs/about/team.md @@ -0,0 +1,21 @@ +--- +layout: docs +title: Team +group: about +--- + +Bootstrap is maintained by the founding team and a small group of invaluable core contributors, with the massive support and involvement of our community. + + + {% for member in site.data.core-team %} + + + + + {{ member.name }} @{{ member.user }} + + + {% endfor %} + + +Get involved with Bootstrap development by [opening an issue](https://github.com/twbs/bootstrap/issues/new) or submitting a pull request. Read our [contributing guidelines](https://github.com/twbs/bootstrap/blob/master/CONTRIBUTING.md) for information on how we develop. diff --git a/site/content/docs/5.0/about/translations.md b/docs/about/translations.md similarity index 57% rename from site/content/docs/5.0/about/translations.md rename to docs/about/translations.md index e719e3a84..de6519bb3 100644 --- a/site/content/docs/5.0/about/translations.md +++ b/docs/about/translations.md @@ -1,19 +1,16 @@ --- layout: docs title: Translations -description: Links to community-translated Bootstrap documentation sites. group: about --- Community members have translated Bootstrap's documentation into various languages. None are officially supported and they may not always be up to date. -{{< translations.inline >}} -{{ range .Site.Data.translations -}} - {{ .description }} ({{ .name }}) -{{ end -}} +{% for language in site.data.translations %} + {{ language.description }} ({{ language.name }}) +{% endfor %} -{{< /translations.inline >}} **We don't help organize or host translations, we just link to them.** diff --git a/docs/apple-touch-icon.png b/docs/apple-touch-icon.png new file mode 100644 index 000000000..b6b1e843b Binary files /dev/null and b/docs/apple-touch-icon.png differ diff --git a/docs/assets/brand/bootstrap-outline.svg b/docs/assets/brand/bootstrap-outline.svg new file mode 100644 index 000000000..9f9794c23 --- /dev/null +++ b/docs/assets/brand/bootstrap-outline.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + diff --git a/docs/assets/brand/bootstrap-punchout.svg b/docs/assets/brand/bootstrap-punchout.svg new file mode 100644 index 000000000..7368058bc --- /dev/null +++ b/docs/assets/brand/bootstrap-punchout.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + diff --git a/docs/assets/brand/bootstrap-solid.svg b/docs/assets/brand/bootstrap-solid.svg new file mode 100644 index 000000000..6c2211d86 --- /dev/null +++ b/docs/assets/brand/bootstrap-solid.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + diff --git a/docs/assets/css/docs.min.css b/docs/assets/css/docs.min.css new file mode 100644 index 000000000..376b24e88 --- /dev/null +++ b/docs/assets/css/docs.min.css @@ -0,0 +1,7 @@ +/*! + * Bootstrap Docs (http://getbootstrap.com) + * Copyright 2011-2015 Twitter, Inc. + * Licensed under the Creative Commons Attribution 3.0 Unported License. For + * details, see https://creativecommons.org/licenses/by/3.0/. + */.bd-booticon{display:block;width:9rem;height:9rem;font-size:6.5rem;line-height:9rem;color:#fff;text-align:center;cursor:default;background-color:#563d7c;border-radius:15%}.bd-booticon.inverse{color:#563d7c;background-color:#fff}.bd-booticon.outline{background-color:transparent;border:1px solid #cdbfe3}.bd-navbar{font-size:87.5%}.bd-navbar .navbar-nav .nav-link{color:#8e869d}.bd-navbar .navbar-nav .nav-link.active,.bd-navbar .navbar-nav .nav-link:focus,.bd-navbar .navbar-nav .nav-link:hover{color:#373a3c;background-color:transparent}.bd-navbar .navbar-nav .nav-link.active{color:#000}.bd-navbar .dropdown-menu{font-size:inherit}@media (max-width:767px){.bd-navbar .nav-link{float:none}.bd-navbar .nav-link+.nav-link{margin-left:0}}.bd-masthead{position:relative;padding:3rem .9375rem 2rem;color:#cdbfe3;text-align:center;background-image:-webkit-linear-gradient(135deg,#271b38,#563d7c,#7952b3);background-image:-webkit-linear-gradient(315deg,#271b38,#563d7c,#7952b3);background-image:-o-linear-gradient(315deg,#271b38,#563d7c,#7952b3);background-image:linear-gradient(135deg,#271b38,#563d7c,#7952b3);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF271B38', endColorstr='#FF7952B3', gradientType='1')}.bd-masthead .bd-booticon{margin:0 auto 2rem;color:#cdbfe3;border-color:#cdbfe3}.bd-masthead h1{font-weight:300;line-height:1}.bd-masthead .lead{margin-left:auto;margin-right:auto;margin-bottom:2rem;font-size:1.25rem;color:#fff}.bd-masthead .version{margin-top:-1rem;margin-bottom:2rem}.bd-masthead .btn{width:100%;padding:1rem 2rem;font-size:1.25rem;font-weight:500;color:#ffe484;border-color:#ffe484}.bd-masthead .btn:hover{color:#2a2730;background-color:#ffe484;border-color:#ffe484}.bd-masthead .carbonad{margin-bottom:-2rem!important}@media (min-width:544px){.bd-masthead{padding-top:8rem;padding-bottom:2rem}.bd-masthead .btn{width:auto}.bd-masthead .carbonad{margin-bottom:0!important}}@media (min-width:768px){.bd-masthead{padding-bottom:4rem}.bd-masthead .bd-header{margin-bottom:4rem}.bd-masthead h1{font-size:4rem}.bd-masthead .lead{font-size:1.5rem}.bd-masthead .carbonad{margin-top:3rem!important}}@media (min-width:992px){.bd-masthead .lead{width:85%;font-size:2rem}}.bd-featurette{padding-top:3rem;padding-bottom:3rem;font-size:1rem;line-height:1.5;color:#555;text-align:center;background-color:#fff;border-top:1px solid #eee}.bd-featurette .highlight{text-align:left}.bd-featurette .lead{margin-right:auto;margin-bottom:2rem;margin-left:auto;font-size:1rem;text-align:center}@media (min-width:544px){.bd-featurette{text-align:left}}@media (min-width:768px){.bd-featurette .col-sm-6:first-child{padding-right:2.8125rem}.bd-featurette .col-sm-6:last-child{padding-left:2.8125rem}}.bd-featurette-title{margin-bottom:.5rem;font-size:2rem;font-weight:400;color:#333;text-align:center}.half-rule{width:6rem;margin:2.5rem auto}@media (min-width:544px){.half-rule{margin-right:0;margin-left:0}}.bd-featurette h4{margin-top:1rem;margin-bottom:.5rem;font-weight:400;color:#333}.bd-featurette-img{display:block;margin-bottom:1.25rem;color:#333}.bd-featurette-img:hover{color:#0275d8;text-decoration:none}.bd-featurette-img img{display:block;margin-bottom:1rem}@media (min-width:480px){.bd-featurette .img-fluid{margin-top:2rem}}@media (min-width:768px){.bd-featurette{padding-top:6rem;padding-bottom:6rem}.bd-featurette-title{font-size:2.5rem}.bd-featurette-title+.lead{font-size:1.5rem}.bd-featurette .lead{max-width:80%}.bd-featurette .img-fluid{margin-top:0}}.bd-featured-sites{margin-right:-1px;margin-left:-1px}.bd-featured-sites .col-xs-6{padding:1px}.bd-featured-sites .img-fluid{margin-top:0}@media (min-width:768px){.bd-featured-sites .col-sm-3:first-child img{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.bd-featured-sites .col-sm-3:last-child img{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}}.carbonad{width:auto!important;height:auto!important;padding:1.25rem!important;margin:2rem -1.875rem -2rem!important;overflow:hidden;font-size:.8rem!important;font-family:inherit!important;line-height:1rem!important;color:#cdbfe3!important;text-align:left;background:#3e2c5a!important;border:0!important}.carbonad-img{margin:0!important}.carbonad-tag,.carbonad-text{display:block!important;float:none!important;width:auto!important;height:auto!important;margin-left:145px!important;font-family:inherit!important}.carbonad-text{padding-top:0!important}.carbonad-tag{color:inherit!important;text-align:left!important}.carbonad-tag a,.carbonad-text a{color:#cdbfe3!important}.carbonad-tag a:hover,.carbonad-text a:hover{color:#fff!important}.carbonad #azcarbon>img{display:none}@media (min-width:544px){.carbonad{width:330px!important;padding:1rem!important;margin-right:auto!important;margin-left:auto!important;border-radius:.25rem}}.bd-content>table{display:block;width:100%;max-width:100%;overflow-y:auto;margin-bottom:1rem}.bd-content>table>tbody>tr>td,.bd-content>table>tbody>tr>th,.bd-content>table>tfoot>tr>td,.bd-content>table>tfoot>tr>th,.bd-content>table>thead>tr>td,.bd-content>table>thead>tr>th{padding:.75rem;line-height:1.5;vertical-align:top;border:1px solid #eceeef}.bd-content>table>tbody>tr>td>p:last-child,.bd-content>table>tbody>tr>th>p:last-child,.bd-content>table>tfoot>tr>td>p:last-child,.bd-content>table>tfoot>tr>th>p:last-child,.bd-content>table>thead>tr>td>p:last-child,.bd-content>table>thead>tr>th>p:last-child{margin-bottom:0}.bd-content>table td:first-child>code{white-space:nowrap}.bd-content>h2:not(:first-child){margin-top:3rem}.bd-content>h3{margin-top:1.5rem}.bd-content>ol li,.bd-content>ul li{margin-bottom:.25rem}@media (min-width:544px){.bd-title{font-size:3rem}.bd-title+p{font-size:1.25rem;font-weight:300}}#markdown-toc>li:first-child{display:none}#markdown-toc ul{padding-left:2rem;margin-top:.25rem;margin-bottom:.25rem}.bd-pageheader{padding:2rem .9375rem;margin-bottom:1.5rem;color:#cdbfe3;text-align:center;background-color:#563d7c}.bd-pageheader .container{position:relative}.bd-pageheader h1{font-size:3rem;font-weight:400;color:#fff}.bd-pageheader p{margin-bottom:0;font-size:1.25rem;font-weight:300}@media (min-width:544px){.bd-pageheader{padding-top:4rem;padding-bottom:4rem;margin-bottom:3rem;text-align:left}.bd-pageheader .carbonad{margin:2rem 0 0!important}}@media (min-width:768px){.bd-pageheader h1{font-size:4rem}.bd-pageheader p{font-size:1.5rem}}@media (min-width:992px){.bd-pageheader h1,.bd-pageheader p{margin-right:380px}.bd-pageheader .carbonad{position:absolute;top:0;right:.75rem;margin:0!important}}#skippy{display:block;padding:1em;color:#fff;background-color:#563d7c;outline:0}#skippy .skiplink-text{padding:.5em;outline:1px dotted}@media (min-width:768px){.bd-sidebar{padding-left:1rem}}.bd-search{position:relative;margin-bottom:1.5rem}.bd-search .form-control{height:2.45rem;padding-top:.4rem;padding-bottom:.4rem;background-color:#fafafa}.bd-search .form-control:focus{background-color:#fff}.bd-search-results{right:0;display:block;padding:0;overflow:hidden;font-size:.9rem}.bd-search-results:empty{display:none}.bd-search-results .dropdown-item{padding-left:.75rem;padding-right:.75rem}.bd-search-results .dropdown-item:first-child{margin-top:.25rem}.bd-search-results .dropdown-item:last-child{margin-bottom:.25rem}.bd-search-results .no-results{padding:.75rem 1rem;color:#7a7a7a;text-align:center;white-space:normal}.bd-sidenav{display:none}.bd-toc-link{display:block;padding:.25rem .75rem;color:#55595c}.bd-toc-link:focus,.bd-toc-link:hover{color:#0275d8;text-decoration:none}.active>.bd-toc-link{font-weight:500;color:#373a3c}.active>.bd-sidenav{display:block}.bd-toc-item.active{margin-top:1rem;margin-bottom:1rem}.bd-toc-item:first-child{margin-top:0}.bd-toc-item:last-child{margin-bottom:2rem}.bd-sidebar .nav>li>a{display:block;padding:.25rem .75rem;font-size:90%;color:#99979c}.bd-sidebar .nav>li>a:focus,.bd-sidebar .nav>li>a:hover{color:#0275d8;text-decoration:none;background-color:transparent}.bd-sidebar .nav>.active:focus>a,.bd-sidebar .nav>.active:hover>a,.bd-sidebar .nav>.active>a{font-weight:500;color:#373a3c;background-color:transparent}.bd-footer{padding:4rem 0;margin-top:4rem;font-size:85%;background-color:#f7f7f7;text-align:center}.bd-footer a{font-weight:500;color:#55595c}.bd-footer a:hover{color:#0275d8}.bd-footer p{margin-bottom:0}@media (min-width:544px){.bd-footer{text-align:left}}.bd-footer-links{padding-left:0;margin-bottom:1rem}.bd-footer-links li{display:inline-block}.bd-footer-links li+li{margin-left:1rem}.bd-example-row .row{margin-bottom:1rem}.bd-example-row .row>[class^=col-]{padding-top:.75rem;padding-bottom:.75rem;background-color:rgba(86,61,124,.15);border:1px solid rgba(86,61,124,.2)}.bd-example-container{min-width:16rem;max-width:25rem;margin-left:auto;margin-right:auto}.bd-example-container-header{height:3rem;margin-bottom:.5rem;background-color:#daeeff;border-radius:.25rem}.bd-example-container-sidebar{float:right;width:4rem;height:8rem;background-color:#fae3c4;border-radius:.25rem}.bd-example-container-body{height:8rem;margin-right:4.5rem;background-color:#957bbe;border-radius:.25rem}.bd-example-container-fluid{max-width:none}.bd-example{position:relative;padding:1rem;margin:1rem -1rem;border:solid #f7f7f9;border-width:.2rem 0 0}.bd-example::after{content:"";display:table;clear:both}@media (min-width:544px){.bd-example{margin-left:0;margin-right:0;margin-bottom:0;padding:1.5rem;border-width:.2rem}}.bd-example+.clipboard+.highlight,.bd-example+.highlight{margin-top:0}.bd-example+p{margin-top:2rem}.bd-example .container{width:auto}.bd-example>.form-control+.form-control{margin-top:.5rem}.bd-example>.card{max-width:20rem}.bd-example>.alert+.alert,.bd-example>.nav+.nav,.bd-example>.navbar+.navbar,.bd-example>.progress+.btn,.bd-example>.progress+.progress{margin-top:1rem}.bd-example>.dropdown-menu:first-child{position:static;display:block}.bd-example>.close{float:none}.bd-example-type .table .type-info{color:#999;vertical-align:middle}.bd-example-type .table td{padding:1rem 0;border-color:#eee}.bd-example-type .table tr:first-child td{border-top:0}.bd-example-type h1,.bd-example-type h2,.bd-example-type h3,.bd-example-type h4,.bd-example-type h5,.bd-example-type h6{margin:0}.bd-example-bg-classes p{padding:1rem}.bd-example>img+img{margin-left:.5rem}.bd-example>.btn-group{margin-top:.25rem;margin-bottom:.25rem}.bd-example>.btn-toolbar+.btn-toolbar{margin-top:.5rem}.bd-example-control-sizing input[type=text]+input[type=text],.bd-example-control-sizing select{margin-top:.5rem}.bd-example-form .input-group{margin-bottom:.5rem}.bd-example>textarea.form-control{resize:vertical}.bd-example>.list-group{max-width:400px}.bd-example .navbar-fixed-top{position:static;margin:-1rem -1rem 1rem}.bd-example .navbar-fixed-bottom{position:static;margin:1rem -1rem -1rem}@media (min-width:544px){.bd-example .navbar-fixed-top{margin:-1.5rem -1.5rem 1rem}.bd-example .navbar-fixed-bottom{margin:1rem -1.5rem -1.5rem}}.bd-example .pagination{margin-top:.5rem;margin-bottom:.5rem}.bd-example>.pager{margin-top:0}.bd-example-modal{background-color:#f5f5f5}.bd-example-modal .modal{position:relative;top:auto;right:auto;bottom:auto;left:auto;z-index:1;display:block}.bd-example-modal .modal-dialog{left:auto;margin-right:auto;margin-left:auto}.bd-example>.dropdown>.dropdown-toggle{float:left}.bd-example>.dropdown>.dropdown-menu{position:static;display:block;margin-bottom:.25rem;clear:left}.bd-example-tabs .nav-tabs{margin-bottom:1rem}.bd-example-tooltips{text-align:center}.bd-example-tooltips>.btn{margin-top:.25rem;margin-bottom:.25rem}.bd-example-popover-static{padding-bottom:1.5rem;background-color:#f9f9f9}.bd-example-popover-static .popover{position:relative;display:block;float:left;width:260px;margin:1.25rem}.tooltip-demo a{white-space:nowrap}.bd-example-tooltip-static .tooltip{position:relative;display:inline-block;margin:10px 20px;opacity:1}.scrollspy-example{position:relative;height:200px;margin-top:.5rem;overflow:auto}.bd-example>.center-block:not(img){max-width:200px;padding:.5rem;background-color:#eee}.bd-example>.bg-danger:not(.navbar),.bd-example>.bg-info:not(.navbar),.bd-example>.bg-inverse:not(.navbar),.bd-example>.bg-primary:not(.navbar),.bd-example>.bg-success:not(.navbar),.bd-example>.bg-warning:not(.navbar){padding:.5rem;margin-top:.5rem;margin-bottom:.5rem}.highlight{padding:1rem;margin:1rem -1rem;background-color:#f7f7f9}@media (min-width:544px){.highlight{padding:1.5rem;margin-right:0;margin-left:0}}.highlight pre{padding:0;margin-top:0;margin-bottom:0;background-color:transparent;border:0}.highlight pre code{font-size:inherit;color:#373a3c}#focusedInput{border-color:#66afe9;outline:0;outline:thin dotted\9;-webkit-box-shadow:0 0 .5rem rgba(102,175,233,.6);box-shadow:0 0 .5rem rgba(102,175,233,.6)}.table-responsive .highlight pre{white-space:normal}.bd-table th small,.responsive-utilities th small{display:block;font-weight:400;color:#999}.responsive-utilities tbody th{font-weight:400}.responsive-utilities td{text-align:center}.responsive-utilities td.is-visible{color:#468847;background-color:#dff0d8!important}.responsive-utilities td.is-hidden{color:#ccc;background-color:#f9f9f9!important}.responsive-utilities-test{margin-top:.25rem}.responsive-utilities-test .col-xs-6{margin-bottom:.5rem}.responsive-utilities-test span{display:block;padding:1rem .5rem;font-size:1rem;font-weight:700;line-height:1.1;text-align:center;border-radius:.25rem}.hidden-on .col-xs-6>.not-visible,.visible-on .col-xs-6>.not-visible{color:#999;border:1px solid #ddd}.hidden-on .col-xs-6 .visible,.visible-on .col-xs-6 .visible{color:#468847;background-color:#dff0d8;border:1px solid #d6e9c6}@media (max-width:543px){.hidden-xs-only{display:none!important}}@media (min-width:544px) and (max-width:767px){.hidden-sm-only{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-md-only{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-lg-only{display:none!important}}@media (min-width:1200px){.hidden-xl-only{display:none!important}}.btn-bs{font-weight:500;color:#7952b3;border-color:#7952b3}.btn-bs:active,.btn-bs:focus,.btn-bs:hover{color:#fff;background-color:#7952b3;border-color:#7952b3}.bd-callout{padding:1.25rem;margin-top:1.25rem;margin-bottom:1.25rem;border:1px solid #eee;border-left-width:.25rem;border-radius:.25rem}.bd-callout h4{margin-top:0;margin-bottom:.25rem}.bd-callout p:last-child{margin-bottom:0}.bd-callout code{border-radius:.25rem}.bd-callout+.bd-callout{margin-top:-.25rem}.bd-callout-info{border-left-color:#5bc0de}.bd-callout-info h4{color:#5bc0de}.bd-callout-warning{border-left-color:#f0ad4e}.bd-callout-warning h4{color:#f0ad4e}.bd-callout-danger{border-left-color:#d9534f}.bd-callout-danger h4{color:#d9534f}.bd-examples .img-thumbnail{margin-bottom:.75rem}.bd-examples h4{margin-bottom:.25rem}.bd-examples p{margin-bottom:1.25rem}@media (max-width:480px){.bd-examples{margin-right:-.75rem;margin-left:-.75rem}.bd-examples>[class^=col-]{padding-right:.75rem;padding-left:.75rem}}.bd-team{margin-bottom:1.5rem}.bd-team .team-member{line-height:2rem;color:#555}.bd-team .team-member:hover{color:#333;text-decoration:none}.bd-team .github-btn{border:none;float:right;width:180px;height:1.25rem;margin-top:.25rem}.bd-team img{float:left;width:2rem;margin-right:.5rem;border-radius:.25rem}.bd-browser-bugs td p{margin-bottom:0}.bd-browser-bugs th:first-child{width:18%}.bd-brand-logos{display:table;width:100%;margin-bottom:1rem;overflow:hidden;color:#563d7c;background-color:#f9f9f9;border-radius:.25rem}.bd-brand-item{padding:4rem 0;text-align:center}.bd-brand-item+.bd-brand-item{border-top:1px solid #fff}.bd-brand-logos .inverse{color:#fff;background-color:#563d7c}.bd-brand-item h1,.bd-brand-item h3{margin-top:0;margin-bottom:0}.bd-brand-item .bd-booticon{margin-right:auto;margin-left:auto}@media (min-width:768px){.bd-brand-item{display:table-cell;width:1%}.bd-brand-item+.bd-brand-item{border-top:0;border-left:1px solid #fff}.bd-brand-item h1{font-size:4rem}}.color-swatches{margin:0 -5px;overflow:hidden}.color-swatch{float:left;width:4rem;height:4rem;margin-right:.25rem;margin-left:.25rem;border-radius:.25rem}@media (min-width:768px){.color-swatch{width:6rem;height:6rem}}.color-swatches .bd-purple{background-color:#563d7c}.color-swatches .bd-purple-light{background-color:#cdbfe3}.color-swatches .bd-purple-lighter{background-color:#e5e1ea}.color-swatches .bd-gray{background-color:#f9f9f9}.bd-clipboard{position:relative;display:none;float:right}.bd-clipboard+.highlight{margin-top:0}.btn-clipboard{position:absolute;top:.5rem;right:.5rem;z-index:10;display:block;padding:.25rem .5rem;font-size:75%;color:#818a91;cursor:pointer;background-color:transparent;border-radius:.25rem}.btn-clipboard:hover{color:#fff;background-color:#027de7}@media (min-width:768px){.bd-clipboard{display:block}}.hll{background-color:#ffc}.c{color:#999}.err{color:#A00;background-color:#FAA}.k{color:#069}.o{color:#555}.cm{color:#999}.cp{color:#099}.c1{color:#999}.cs{color:#999}.gd{background-color:#FCC;border:1px solid #C00}.ge{font-style:italic}.gr{color:red}.gh{color:#030}.gi{background-color:#CFC;border:1px solid #0C0}.go{color:#AAA}.gp{color:#009}.gu{color:#030}.gt{color:#9C6}.kc{color:#069}.kd{color:#069}.kn{color:#069}.kp{color:#069}.kr{color:#069}.kt{color:#078}.m{color:#F60}.s{color:#d44950}.na{color:#4f9fcf}.nb{color:#366}.nc{color:#0A8}.no{color:#360}.nd{color:#99F}.ni{color:#999}.ne{color:#C00}.nf{color:#C0F}.nl{color:#99F}.nn{color:#0CF}.nt{color:#2f6f9f}.nv{color:#033}.ow{color:#000}.w{color:#bbb}.mf{color:#F60}.mh{color:#F60}.mi{color:#F60}.mo{color:#F60}.sb{color:#C30}.sc{color:#C30}.sd{color:#C30;font-style:italic}.s2{color:#C30}.se{color:#C30}.sh{color:#C30}.si{color:#A00}.sx{color:#C30}.sr{color:#3AA}.s1{color:#C30}.ss{color:#FC3}.bp{color:#366}.vc{color:#033}.vg{color:#033}.vi{color:#033}.il{color:#F60}.css .nt+.nt,.css .o,.css .o+.nt{color:#999}.anchorjs-link{color:inherit}@media (max-width:480px){.anchorjs-link{display:none}}:hover>.anchorjs-link{opacity:.75;-webkit-transition:color .16s linear;-o-transition:color .16s linear;transition:color .16s linear}.anchorjs-link:focus,:hover>.anchorjs-link:hover{text-decoration:none;opacity:1} +/*# sourceMappingURL=docs.min.css.map */ \ No newline at end of file diff --git a/docs/assets/css/docs.min.css.map b/docs/assets/css/docs.min.css.map new file mode 100644 index 000000000..06aa71ccc --- /dev/null +++ b/docs/assets/css/docs.min.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["docs/assets/css/docs.min.css"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/docs/assets/img/bs-themes.png b/docs/assets/img/bs-themes.png new file mode 100644 index 000000000..925621309 Binary files /dev/null and b/docs/assets/img/bs-themes.png differ diff --git a/docs/assets/img/components.png b/docs/assets/img/components.png new file mode 100644 index 000000000..2cbee5463 Binary files /dev/null and b/docs/assets/img/components.png differ diff --git a/docs/assets/img/devices.png b/docs/assets/img/devices.png new file mode 100644 index 000000000..ecd079f1e Binary files /dev/null and b/docs/assets/img/devices.png differ diff --git a/docs/assets/img/expo-lyft.jpg b/docs/assets/img/expo-lyft.jpg new file mode 100644 index 000000000..763db8208 Binary files /dev/null and b/docs/assets/img/expo-lyft.jpg differ diff --git a/docs/assets/img/expo-newsweek.jpg b/docs/assets/img/expo-newsweek.jpg new file mode 100644 index 000000000..bcecdea51 Binary files /dev/null and b/docs/assets/img/expo-newsweek.jpg differ diff --git a/docs/assets/img/expo-riot.jpg b/docs/assets/img/expo-riot.jpg new file mode 100644 index 000000000..e9c6bd1ab Binary files /dev/null and b/docs/assets/img/expo-riot.jpg differ diff --git a/docs/assets/img/expo-vogue.jpg b/docs/assets/img/expo-vogue.jpg new file mode 100644 index 000000000..324f81849 Binary files /dev/null and b/docs/assets/img/expo-vogue.jpg differ diff --git a/docs/assets/img/sass.png b/docs/assets/img/sass.png new file mode 100644 index 000000000..7b2b2a5a0 Binary files /dev/null and b/docs/assets/img/sass.png differ diff --git a/docs/assets/js/docs.min.js b/docs/assets/js/docs.min.js new file mode 100644 index 000000000..59cef64dd --- /dev/null +++ b/docs/assets/js/docs.min.js @@ -0,0 +1,29 @@ +/*! + * AnchorJS - v2.0.0 - 2015-10-31 + * https://github.com/bryanbraun/anchorjs + * Copyright (c) 2015 Bryan Braun; Licensed MIT + */ +function AnchorJS(a){"use strict";function b(a){d.options.icon=d.options.hasOwnProperty("icon")?a.icon:"",d.options.visible=d.options.hasOwnProperty("visible")?a.visible:"hover",d.options.placement=d.options.hasOwnProperty("placement")?a.placement:"right",d.options["class"]=d.options.hasOwnProperty("class")?a["class"]:"",d.options.truncate=d.options.hasOwnProperty("truncate")?Math.floor(a.truncate):64}function c(){if(null===document.head.querySelector("style.anchorjs")){var a,b=document.createElement("style"),c=" .anchorjs-link { opacity: 0; text-decoration: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }",d=" *:hover > .anchorjs-link, .anchorjs-link:focus { opacity: 1; }",e=' @font-face { font-family: "anchorjs-icons"; font-style: normal; font-weight: normal; src: url(data:application/x-font-ttf;charset=utf-8;base64,AAEAAAALAIAAAwAwT1MvMg8SBTUAAAC8AAAAYGNtYXAWi9QdAAABHAAAAFRnYXNwAAAAEAAAAXAAAAAIZ2x5Zgq29TcAAAF4AAABNGhlYWQEZM3pAAACrAAAADZoaGVhBhUDxgAAAuQAAAAkaG10eASAADEAAAMIAAAAFGxvY2EAKACuAAADHAAAAAxtYXhwAAgAVwAAAygAAAAgbmFtZQ5yJ3cAAANIAAAB2nBvc3QAAwAAAAAFJAAAACAAAwJAAZAABQAAApkCzAAAAI8CmQLMAAAB6wAzAQkAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAABAAADpywPA/8AAQAPAAEAAAAABAAAAAAAAAAAAAAAgAAAAAAADAAAAAwAAABwAAQADAAAAHAADAAEAAAAcAAQAOAAAAAoACAACAAIAAQAg6cv//f//AAAAAAAg6cv//f//AAH/4xY5AAMAAQAAAAAAAAAAAAAAAQAB//8ADwABAAAAAAAAAAAAAgAANzkBAAAAAAEAAAAAAAAAAAACAAA3OQEAAAAAAQAAAAAAAAAAAAIAADc5AQAAAAACADEARAJTAsAAKwBUAAABIiYnJjQ/AT4BMzIWFxYUDwEGIicmND8BNjQnLgEjIgYPAQYUFxYUBw4BIwciJicmND8BNjIXFhQPAQYUFx4BMzI2PwE2NCcmNDc2MhcWFA8BDgEjARQGDAUtLXoWOR8fORYtLTgKGwoKCjgaGg0gEhIgDXoaGgkJBQwHdR85Fi0tOAobCgoKOBoaDSASEiANehoaCQkKGwotLXoWOR8BMwUFLYEuehYXFxYugC44CQkKGwo4GkoaDQ0NDXoaShoKGwoFBe8XFi6ALjgJCQobCjgaShoNDQ0NehpKGgobCgoKLYEuehYXAAEAAAABAACiToc1Xw889QALBAAAAAAA0XnFFgAAAADRecUWAAAAAAJTAsAAAAAIAAIAAAAAAAAAAQAAA8D/wAAABAAAAAAAAlMAAQAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAACAAAAAoAAMQAAAAAACgAUAB4AmgABAAAABQBVAAIAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAADgCuAAEAAAAAAAEADgAAAAEAAAAAAAIABwCfAAEAAAAAAAMADgBLAAEAAAAAAAQADgC0AAEAAAAAAAUACwAqAAEAAAAAAAYADgB1AAEAAAAAAAoAGgDeAAMAAQQJAAEAHAAOAAMAAQQJAAIADgCmAAMAAQQJAAMAHABZAAMAAQQJAAQAHADCAAMAAQQJAAUAFgA1AAMAAQQJAAYAHACDAAMAAQQJAAoANAD4YW5jaG9yanMtaWNvbnMAYQBuAGMAaABvAHIAagBzAC0AaQBjAG8AbgBzVmVyc2lvbiAxLjAAVgBlAHIAcwBpAG8AbgAgADEALgAwYW5jaG9yanMtaWNvbnMAYQBuAGMAaABvAHIAagBzAC0AaQBjAG8AbgBzYW5jaG9yanMtaWNvbnMAYQBuAGMAaABvAHIAagBzAC0AaQBjAG8AbgBzUmVndWxhcgBSAGUAZwB1AGwAYQByYW5jaG9yanMtaWNvbnMAYQBuAGMAaABvAHIAagBzAC0AaQBjAG8AbgBzRm9udCBnZW5lcmF0ZWQgYnkgSWNvTW9vbi4ARgBvAG4AdAAgAGcAZQBuAGUAcgBhAHQAZQBkACAAYgB5ACAASQBjAG8ATQBvAG8AbgAuAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==) format("truetype"); }',f=" [data-anchorjs-icon]::after { content: attr(data-anchorjs-icon); }";b.className="anchorjs",b.appendChild(document.createTextNode("")),a=document.head.querySelector('[rel="stylesheet"], style'),void 0===a?document.head.appendChild(b):document.head.insertBefore(b,a),b.sheet.insertRule(c,b.sheet.cssRules.length),b.sheet.insertRule(d,b.sheet.cssRules.length),b.sheet.insertRule(f,b.sheet.cssRules.length),b.sheet.insertRule(e,b.sheet.cssRules.length)}}var d=this;this.options=a||{},b(a),this.add=function(a){var d,e,f,g,h,i,j,k,l,m,n,o;if(b(this.options),a){if("string"!=typeof a)throw new Error("The selector provided to AnchorJS was invalid.")}else a="h1, h2, h3, h4, h5, h6";if(d=document.querySelectorAll(a),0===d.length)return!1;for(c(),e=document.querySelectorAll("[id]"),f=[].map.call(e,function(a){return a.id}),h=0;hd;d++)c[d].fn.apply(c[d].ctx,b);return this},off:function(a,b){var c=this.e||(this.e={}),d=c[a],e=[];if(d&&b)for(var f=0,g=d.length;g>f;f++)d[f].fn!==b&&d[f].fn._!==b&&e.push(d[f]);return e.length?c[a]=e:delete c[a],this}},b.exports=d},{}],8:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}c.__esModule=!0;var f=function(){function a(a,b){for(var c=0;c>>0;if("function"!=typeof a)throw TypeError();var d,e=arguments[1];for(d=0;c>d;d++)d in b&&a.call(e,b[d],d,b)}),function(a){var b="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";a.atob=a.atob||function(a){a=String(a);var c,d=0,e=[],f=0,g=0;if(a=a.replace(/\s/g,""),a.length%4===0&&(a=a.replace(/=+$/,"")),a.length%4===1)throw Error("InvalidCharacterError");if(/[^+/0-9A-Za-z]/.test(a))throw Error("InvalidCharacterError");for(;d>16&255)),e.push(String.fromCharCode(f>>8&255)),e.push(String.fromCharCode(255&f)),g=0,f=0),d+=1;return 12===g?(f>>=4,e.push(String.fromCharCode(255&f))):18===g&&(f>>=2,e.push(String.fromCharCode(f>>8&255)),e.push(String.fromCharCode(255&f))),e.join("")},a.btoa=a.btoa||function(a){a=String(a);var c,d,e,f,g,h,i,j=0,k=[];if(/[^\x00-\xFF]/.test(a))throw Error("InvalidCharacterError");for(;j>2,g=(3&c)<<4|d>>4,h=(15&d)<<2|e>>6,i=63&e,j===a.length+2?(h=64,i=64):j===a.length+1&&(i=64),k.push(b.charAt(f),b.charAt(g),b.charAt(h),b.charAt(i));return k.join("")}}(a),Object.prototype.hasOwnProperty||(Object.prototype.hasOwnProperty=function(a){var b=this.__proto__||this.constructor.prototype;return a in this&&(!(a in b)||b[a]!==this[a])}),function(){if("performance"in a==0&&(a.performance={}),Date.now=Date.now||function(){return(new Date).getTime()},"now"in a.performance==0){var b=Date.now();performance.timing&&performance.timing.navigationStart&&(b=performance.timing.navigationStart),a.performance.now=function(){return Date.now()-b}}}(),a.requestAnimationFrame||(a.webkitRequestAnimationFrame?!function(a){a.requestAnimationFrame=function(b){return webkitRequestAnimationFrame(function(){b(a.performance.now())})},a.cancelAnimationFrame=webkitCancelAnimationFrame}(a):a.mozRequestAnimationFrame?!function(a){a.requestAnimationFrame=function(b){return mozRequestAnimationFrame(function(){b(a.performance.now())})},a.cancelAnimationFrame=mozCancelAnimationFrame}(a):!function(a){a.requestAnimationFrame=function(b){return a.setTimeout(b,1e3/60)},a.cancelAnimationFrame=a.clearTimeout}(a))}}(this),function(a,b){"object"==typeof exports&&"object"==typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):"object"==typeof exports?exports.Holder=b():a.Holder=b()}(this,function(){return function(a){function b(d){if(c[d])return c[d].exports;var e=c[d]={exports:{},id:d,loaded:!1};return a[d].call(e.exports,e,e.exports,b),e.loaded=!0,e.exports}var c={};return b.m=a,b.c=c,b.p="",b(0)}([function(a,b,c){a.exports=c(1)},function(a,b,c){(function(b){function d(a,b,c,d){var g=e(c.substr(c.lastIndexOf(a.domain)),a);g&&f({mode:null,el:d,flags:g,engineSettings:b})}function e(a,b){var c={theme:z(D.settings.themes.gray,null),stylesheets:b.stylesheets,instanceOptions:b},d=a.split("?"),e=d[0].split("/");c.holderURL=a;var f=e[1],g=f.match(/([\d]+p?)x([\d]+p?)/);if(!g)return!1;if(c.fluid=-1!==f.indexOf("p"),c.dimensions={width:g[1].replace("p","%"),height:g[2].replace("p","%")},2===d.length){var h=r.parse(d[1]);if(h.bg&&(c.theme.background=t.parseColor(h.bg)),h.fg&&(c.theme.foreground=t.parseColor(h.fg)),h.bg&&!h.fg&&(c.autoFg=!0),h.theme&&c.instanceOptions.themes.hasOwnProperty(h.theme)&&(c.theme=z(c.instanceOptions.themes[h.theme],null)),h.text&&(c.text=h.text),h.textmode&&(c.textmode=h.textmode),h.size&&(c.size=h.size),h.font&&(c.font=h.font),h.align&&(c.align=h.align),c.nowrap=t.truthy(h.nowrap),c.auto=t.truthy(h.auto),c.outline=t.truthy(h.outline),t.truthy(h.random)){D.vars.cache.themeKeys=D.vars.cache.themeKeys||Object.keys(c.instanceOptions.themes);var i=D.vars.cache.themeKeys[0|Math.random()*D.vars.cache.themeKeys.length];c.theme=z(c.instanceOptions.themes[i],null)}}return c}function f(a){var b=a.mode,c=a.el,d=a.flags,e=a.engineSettings,f=d.dimensions,h=d.theme,i=f.width+"x"+f.height;if(b=null==b?d.fluid?"fluid":"image":b,null!=d.text&&(h.text=d.text,"object"===c.nodeName.toLowerCase())){for(var l=h.text.split("\\n"),m=0;m1){var t,u=0,v=0,x=0;p=new e.Group("line"+x),("left"===a.align||"right"===a.align)&&(r=a.width*(1-2*(1-D.vars.lineWrapRatio)));for(var y=0;y=r||A===!0)&&(b(m,p,u,m.properties.leading),m.add(p),u=0,v+=m.properties.leading,x+=1,p=new e.Group("line"+x),p.y=v),A!==!0&&(o.moveTo(u,0),u+=n.spaceWidth+z.width,p.add(o))}if(b(m,p,u,m.properties.leading),m.add(p),"left"===a.align)m.moveTo(a.width-q,null,null);else if("right"===a.align){for(t in m.children)p=m.children[t],p.moveTo(a.width-p.width,null,null);m.moveTo(0-(a.width-q),null,null)}else{for(t in m.children)p=m.children[t],p.moveTo((m.width-p.width)/2,null,null);m.moveTo((a.width-m.width)/2,null,null)}m.moveTo(null,(a.height-m.height)/2,null),(a.height-m.height)/2<0&&m.moveTo(null,0,null)}else o=new e.Text(a.text),p=new e.Group("line0"),p.add(o),m.add(p),"left"===a.align?m.moveTo(a.width-q,null,null):"right"===a.align?m.moveTo(0-(a.width-q),null,null):m.moveTo((a.width-n.boundingBox.width)/2,null,null),m.moveTo(null,(a.height-n.boundingBox.height)/2,null);return d}function i(a,b,c,d){var e=parseInt(a,10),f=parseInt(b,10),g=Math.max(e,f),h=Math.min(e,f),i=.8*Math.min(h,g*d);return Math.round(Math.max(c,i))}function j(a){var b;b=null==a||null==a.nodeType?D.vars.resizableImages:[a];for(var c=0,d=b.length;d>c;c++){var e=b[c];if(e.holderData){var f=e.holderData.flags,h=A(e);if(h){if(!e.holderData.resizeUpdate)continue;if(f.fluid&&f.auto){var i=e.holderData.fluidConfig;switch(i.mode){case"width":h.height=h.width/i.ratio;break;case"height":h.width=h.height*i.ratio}}var j={mode:"image",holderSettings:{dimensions:h,theme:f.theme,flags:f},el:e,engineSettings:e.holderData.engineSettings};"exact"==f.textmode&&(f.exactDimensions=h,j.holderSettings.dimensions=f.dimensions),g(j)}else n(e)}}}function k(a){if(a.holderData){var b=A(a);if(b){var c=a.holderData.flags,d={fluidHeight:"%"==c.dimensions.height.slice(-1),fluidWidth:"%"==c.dimensions.width.slice(-1),mode:null,initialDimensions:b};d.fluidWidth&&!d.fluidHeight?(d.mode="width",d.ratio=d.initialDimensions.width/parseFloat(c.dimensions.height)):!d.fluidWidth&&d.fluidHeight&&(d.mode="height",d.ratio=parseFloat(c.dimensions.width)/d.initialDimensions.height),a.holderData.fluidConfig=d}else n(a)}}function l(){var a,c=[],d=Object.keys(D.vars.invisibleImages);d.forEach(function(b){a=D.vars.invisibleImages[b],A(a)&&"img"==a.nodeName.toLowerCase()&&(c.push(a),delete D.vars.invisibleImages[b])}),c.length&&C.run({images:c}),setTimeout(function(){b.requestAnimationFrame(l)},10)}function m(){D.vars.visibilityCheckStarted||(b.requestAnimationFrame(l),D.vars.visibilityCheckStarted=!0)}function n(a){a.holderData.invisibleId||(D.vars.invisibleId+=1,D.vars.invisibleImages["i"+D.vars.invisibleId]=a,a.holderData.invisibleId=D.vars.invisibleId)}function o(a){D.vars.debounceTimer||a.call(this),D.vars.debounceTimer&&b.clearTimeout(D.vars.debounceTimer),D.vars.debounceTimer=b.setTimeout(function(){D.vars.debounceTimer=null,a.call(this)},D.setup.debounce)}function p(){o(function(){j(null)})}var q=c(2),r=c(3),s=c(4),t=c(5),u=c(6),v=c(7),w=c(8),x=c(9),y=c(10),z=t.extend,A=t.dimensionCheck,B=x.svg_ns,C={version:x.version,addTheme:function(a,b){return null!=a&&null!=b&&(D.settings.themes[a]=b),delete D.vars.cache.themeKeys,this},addImage:function(a,b){var c=v.getNodeArray(b);return c.forEach(function(b){var c=v.newEl("img"),d={};d[D.setup.dataAttr]=a,v.setAttr(c,d),b.appendChild(c)}),this},setResizeUpdate:function(a,b){a.holderData&&(a.holderData.resizeUpdate=!!b,a.holderData.resizeUpdate&&j(a))},run:function(a){a=a||{};var c={},g=z(D.settings,a);D.vars.preempted=!0,D.vars.dataAttr=g.dataAttr||D.setup.dataAttr,D.vars.lineWrapRatio=g.lineWrapRatio||D.setup.lineWrapRatio,c.renderer=g.renderer?g.renderer:D.setup.renderer,-1===D.setup.renderers.join(",").indexOf(c.renderer)&&(c.renderer=D.setup.supportsSVG?"svg":D.setup.supportsCanvas?"canvas":"html");var h=v.getNodeArray(g.images),i=v.getNodeArray(g.bgnodes),j=v.getNodeArray(g.stylenodes),k=v.getNodeArray(g.objects);return c.stylesheets=[],c.svgXMLStylesheet=!0,c.noFontFallback=g.noFontFallback?g.noFontFallback:!1,j.forEach(function(a){if(a.attributes.rel&&a.attributes.href&&"stylesheet"==a.attributes.rel.value){var b=a.attributes.href.value,d=v.newEl("a");d.href=b;var e=d.protocol+"//"+d.host+d.pathname+d.search;c.stylesheets.push(e)}}),i.forEach(function(a){if(b.getComputedStyle){var d=b.getComputedStyle(a,null).getPropertyValue("background-image"),h=a.getAttribute("data-background-src"),i=h||d,j=null,k=g.domain+"/",l=i.indexOf(k);if(0===l)j=i;else if(1===l&&"?"===i[0])j=i.slice(1);else{var m=i.substr(l).match(/([^\"]*)"?\)/);if(null!==m)j=m[1];else if(0===i.indexOf("url("))throw"Holder: unable to parse background URL: "+i}if(null!=j){var n=e(j,g);n&&f({mode:"background",el:a,flags:n,engineSettings:c})}}}),k.forEach(function(a){var b={};try{b.data=a.getAttribute("data"),b.dataSrc=a.getAttribute(D.vars.dataAttr)}catch(e){}var f=null!=b.data&&0===b.data.indexOf(g.domain),h=null!=b.dataSrc&&0===b.dataSrc.indexOf(g.domain);f?d(g,c,b.data,a):h&&d(g,c,b.dataSrc,a)}),h.forEach(function(a){var b={};try{b.src=a.getAttribute("src"),b.dataSrc=a.getAttribute(D.vars.dataAttr),b.rendered=a.getAttribute("data-holder-rendered")}catch(e){}var f=null!=b.src,h=null!=b.dataSrc&&0===b.dataSrc.indexOf(g.domain),i=null!=b.rendered&&"true"==b.rendered;f?0===b.src.indexOf(g.domain)?d(g,c,b.src,a):h&&(i?d(g,c,b.dataSrc,a):!function(a,b,c,e,f){t.imageExists(a,function(a){a||d(b,c,e,f)})}(b.src,g,c,b.dataSrc,a)):h&&d(g,c,b.dataSrc,a)}),this}},D={settings:{domain:"holder.js",images:"img",objects:"object",bgnodes:"body .holderjs",stylenodes:"head link.holderjs",themes:{gray:{background:"#EEEEEE",foreground:"#AAAAAA"},social:{background:"#3a5a97",foreground:"#FFFFFF"},industrial:{background:"#434A52",foreground:"#C2F200"},sky:{background:"#0D8FDB",foreground:"#FFFFFF"},vine:{background:"#39DBAC",foreground:"#1E292C"},lava:{background:"#F8591A",foreground:"#1C2846"}}},defaults:{size:10,units:"pt",scale:1/16}},E=function(){var a=null,b=null,c=null;return function(d){var e=d.root;if(D.setup.supportsSVG){var f=!1,g=function(a){return document.createTextNode(a)};(null==a||a.parentNode!==document.body)&&(f=!0),a=u.initSVG(a,e.properties.width,e.properties.height),a.style.display="block",f&&(b=v.newEl("text",B),c=g(null),v.setAttr(b,{x:0}),b.appendChild(c),a.appendChild(b),document.body.appendChild(a),a.style.visibility="hidden",a.style.position="absolute",a.style.top="-100%",a.style.left="-100%");var h=e.children.holderTextGroup,i=h.properties;v.setAttr(b,{y:i.font.size,style:t.cssProps({"font-weight":i.font.weight,"font-size":i.font.size+i.font.units,"font-family":i.font.family})}),c.nodeValue=i.text;var j=b.getBBox(),k=Math.ceil(j.width/(e.properties.width*D.vars.lineWrapRatio)),l=i.text.split(" "),m=i.text.match(/\\n/g);k+=null==m?0:m.length,c.nodeValue=i.text.replace(/[ ]+/g,"");var n=b.getComputedTextLength(),o=j.width-n,p=Math.round(o/Math.max(1,l.length-1)),q=[];if(k>1){c.nodeValue="";for(var r=0;r=0?b:1)}function f(a){v?e(a):w.push(a)}null==document.readyState&&document.addEventListener&&(document.addEventListener("DOMContentLoaded",function y(){document.removeEventListener("DOMContentLoaded",y,!1),document.readyState="complete"},!1),document.readyState="loading");var g=a.document,h=g.documentElement,i="load",j=!1,k="on"+i,l="complete",m="readyState",n="attachEvent",o="detachEvent",p="addEventListener",q="DOMContentLoaded",r="onreadystatechange",s="removeEventListener",t=p in g,u=j,v=j,w=[];if(g[m]===l)e(b);else if(t)g[p](q,c,j),a[p](i,c,j);else{g[n](r,c),a[n](k,c);try{u=null==a.frameElement&&h}catch(x){}u&&u.doScroll&&!function z(){if(!v){try{u.doScroll("left")}catch(a){return e(z,50)}d(),b()}}()}return f.version="1.4.0",f.isReady=function(){return v},f}a.exports="undefined"!=typeof window&&d(window)},function(a,b,c){var d=encodeURIComponent,e=decodeURIComponent,f=c(11),g=c(12),h=/(\w+)\[(\d+)\]/,i=/\w+\.\w+/;b.parse=function(a){if("string"!=typeof a)return{};if(a=f(a),""===a)return{};"?"===a.charAt(0)&&(a=a.slice(1));for(var b={},c=a.split("&"),d=0;d=0;d--)c=a.charCodeAt(d),b.unshift(c>128?["",c,";"].join(""):a[d]);return b.join("")},b.imageExists=function(a,b){var c=new Image;c.onerror=function(){b.call(this,!1)},c.onload=function(){b.call(this,!0)},c.src=a},b.decodeHtmlEntity=function(a){return a.replace(/(\d+);/g,function(a,b){return String.fromCharCode(b)})},b.dimensionCheck=function(a){var b={height:a.clientHeight,width:a.clientWidth};return b.height&&b.width?b:!1},b.truthy=function(a){return"string"==typeof a?"true"===a||"yes"===a||"1"===a||"on"===a||"✓"===a:!!a},b.parseColor=function(a){var b,c=/(^(?:#?)[0-9a-f]{6}$)|(^(?:#?)[0-9a-f]{3}$)/i,d=/^rgb\((\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*\)$/,e=/^rgba\((\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(0\.\d{1,}|1)\)$/,f=a.match(c);return null!==f?(b=f[1]||f[2],"#"!==b[0]?"#"+b:b):(f=a.match(d),null!==f?b="rgb("+f.slice(1).join(",")+")":(f=a.match(e),null!==f?b="rgba("+f.slice(1).join(",")+")":null))}},function(a,b,c){(function(a){var d=c(7),e="http://www.w3.org/2000/svg",f=8;b.initSVG=function(a,b,c){var g,h,i=!1;a&&a.querySelector?(h=a.querySelector("style"),null===h&&(i=!0)):(a=d.newEl("svg",e),i=!0),i&&(g=d.newEl("defs",e),h=d.newEl("style",e),d.setAttr(h,{type:"text/css"}),g.appendChild(h),a.appendChild(g)),a.webkitMatchesSelector&&a.setAttribute("xmlns",e);for(var j=0;j=0;i--){var j=h.createProcessingInstruction("xml-stylesheet",'href="'+g[i]+'" rel="stylesheet"');h.insertBefore(j,h.firstChild)}h.removeChild(h.documentElement),f=e.serializeToString(h)}var k=e.serializeToString(b);return k=k.replace(/\&(\#[0-9]{2,}\;)/g,"&$1"),f+k}}}).call(b,function(){return this}())},function(a,b,c){(function(a){b.newEl=function(b,c){return a.document?null==c?a.document.createElement(b):a.document.createElementNS(c,b):void 0},b.setAttr=function(a,b){for(var c in b)a.setAttribute(c,b[c])},b.createXML=function(){return a.DOMParser?(new DOMParser).parseFromString("","application/xml"):void 0},b.getNodeArray=function(b){var c=null;return"string"==typeof b?c=document.querySelectorAll(b):a.NodeList&&b instanceof a.NodeList?c=b:a.Node&&b instanceof a.Node?c=[b]:a.HTMLCollection&&b instanceof a.HTMLCollection?c=b:b instanceof Array?c=b:null===b&&(c=[]),c=Array.prototype.slice.call(c)}}).call(b,function(){return this}())},function(a,b,c){var d=function(a,b){"string"==typeof a&&(this.original=a,"#"===a.charAt(0)&&(a=a.slice(1)),/[^a-f0-9]+/i.test(a)||(3===a.length&&(a=a.replace(/./g,"$&$&")),6===a.length&&(this.alpha=1,b&&b.alpha&&(this.alpha=b.alpha),this.set(parseInt(a,16)))))};d.rgb2hex=function(a,b,c){function d(a){var b=(0|a).toString(16);return 16>a&&(b="0"+b),b}return[a,b,c].map(d).join("")},d.hsl2rgb=function(a,b,c){var d=a/60,e=(1-Math.abs(2*c-1))*b,f=e*(1-Math.abs(parseInt(d)%2-1)),g=c-e/2,h=0,i=0,j=0;return d>=0&&1>d?(h=e,i=f):d>=1&&2>d?(h=f,i=e):d>=2&&3>d?(i=e,j=f):d>=3&&4>d?(i=f,j=e):d>=4&&5>d?(h=f,j=e):d>=5&&6>d&&(h=e,j=f),h+=g,i+=g,j+=g,h=parseInt(255*h),i=parseInt(255*i),j=parseInt(255*j),[h,i,j]},d.prototype.set=function(a){this.raw=a;var b=(16711680&this.raw)>>16,c=(65280&this.raw)>>8,d=255&this.raw,e=.2126*b+.7152*c+.0722*d,f=-.09991*b-.33609*c+.436*d,g=.615*b-.55861*c-.05639*d;return this.rgb={r:b,g:c,b:d},this.yuv={y:e,u:f,v:g},this},d.prototype.lighten=function(a){var b=Math.min(1,Math.max(0,Math.abs(a)))*(0>a?-1:1),c=255*b|0,e=Math.min(255,Math.max(0,this.rgb.r+c)),f=Math.min(255,Math.max(0,this.rgb.g+c)),g=Math.min(255,Math.max(0,this.rgb.b+c)),h=d.rgb2hex(e,f,g);return new d(h)},d.prototype.toHex=function(a){return(a?"#":"")+this.raw.toString(16)},d.prototype.lighterThan=function(a){return a instanceof d||(a=new d(a)),this.yuv.y>a.yuv.y},d.prototype.blendAlpha=function(a){a instanceof d||(a=new d(a));var b=a,c=this,e=b.alpha*b.rgb.r+(1-b.alpha)*c.rgb.r,f=b.alpha*b.rgb.g+(1-b.alpha)*c.rgb.g,g=b.alpha*b.rgb.b+(1-b.alpha)*c.rgb.b;return new d(d.rgb2hex(e,f,g))},a.exports=d},function(a,b,c){a.exports={version:"2.8.2",svg_ns:"http://www.w3.org/2000/svg"}},function(a,b,c){(function(b){var d=c(6),e=c(7),f=c(5),g=c(9),h=g.svg_ns,i="\nCreated with Holder.js "+g.version+".\nLearn more at http://holderjs.com\n(c) 2012-2015 Ivan Malopinsky - http://imsky.co\n";a.exports=function(){if(b.XMLSerializer){var a=e.createXML(),c=d.initSVG(null,0,0),g=e.newEl("rect",h);return c.appendChild(g),function(b,j){var k=b.root;d.initSVG(c,k.properties.width,k.properties.height);for(var l=c.querySelectorAll("g"),m=0;m h1, .bd-content > h2, .bd-content > h3, .bd-content > h4, .bd-content > h5")}(); \ No newline at end of file diff --git a/docs/assets/js/ie-emulation-modes-warning.js b/docs/assets/js/ie-emulation-modes-warning.js new file mode 100644 index 000000000..2016da6d5 --- /dev/null +++ b/docs/assets/js/ie-emulation-modes-warning.js @@ -0,0 +1,51 @@ +// NOTICE!! DO NOT USE ANY OF THIS JAVASCRIPT +// IT'S JUST JUNK FOR OUR DOCS! +// ++++++++++++++++++++++++++++++++++++++++++ +/*! + * Copyright 2014-2015 Twitter, Inc. + * + * Licensed under the Creative Commons Attribution 3.0 Unported License. For + * details, see https://creativecommons.org/licenses/by/3.0/. + */ +// Intended to prevent false-positive bug reports about Bootstrap not working properly in old versions of IE due to folks testing using IE's unreliable emulation modes. +(function () { + 'use strict'; + + function emulatedIEMajorVersion() { + var groups = /MSIE ([0-9.]+)/.exec(window.navigator.userAgent) + if (groups === null) { + return null + } + var ieVersionNum = parseInt(groups[1], 10) + var ieMajorVersion = Math.floor(ieVersionNum) + return ieMajorVersion + } + + function actualNonEmulatedIEMajorVersion() { + // Detects the actual version of IE in use, even if it's in an older-IE emulation mode. + // IE JavaScript conditional compilation docs: https://msdn.microsoft.com/library/121hztk3%28v=vs.94%29.aspx + // @cc_on docs: https://msdn.microsoft.com/library/8ka90k2e%28v=vs.94%29.aspx + var jscriptVersion = new Function('/*@cc_on return @_jscript_version; @*/')() + if (jscriptVersion === undefined) { + return 11 // IE11+ not in emulation mode + } + if (jscriptVersion < 9) { + return 8 // IE8 (or lower; haven't tested on IE<8) + } + return jscriptVersion // IE9 or IE10 in any mode, or IE11 in non-IE11 mode + } + + var ua = window.navigator.userAgent + if (ua.indexOf('Opera') > -1 || ua.indexOf('Presto') > -1) { + return // Opera, which might pretend to be IE + } + var emulated = emulatedIEMajorVersion() + if (emulated === null) { + return // Not IE + } + var nonEmulated = actualNonEmulatedIEMajorVersion() + + if (emulated !== nonEmulated) { + window.alert('WARNING: You appear to be using IE' + nonEmulated + ' in IE' + emulated + ' emulation mode.\nIE emulation modes can behave significantly differently from ACTUAL older versions of IE.\nPLEASE DON\'T FILE BOOTSTRAP BUGS based on testing in IE emulation modes!') + } +})(); diff --git a/docs/assets/js/ie10-viewport-bug-workaround.js b/docs/assets/js/ie10-viewport-bug-workaround.js new file mode 100644 index 000000000..162dafb9d --- /dev/null +++ b/docs/assets/js/ie10-viewport-bug-workaround.js @@ -0,0 +1,23 @@ +/*! + * IE10 viewport hack for Surface/desktop Windows 8 bug + * Copyright 2014-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ + +// See the Getting Started docs for more information: +// http://getbootstrap.com/getting-started/#support-ie10-width + +(function () { + 'use strict'; + + if (navigator.userAgent.match(/IEMobile\/10\.0/)) { + var msViewportStyle = document.createElement('style') + msViewportStyle.appendChild( + document.createTextNode( + '@-ms-viewport{width:auto!important}' + ) + ) + document.head.appendChild(msViewportStyle) + } + +})(); diff --git a/docs/assets/js/src/application.js b/docs/assets/js/src/application.js new file mode 100644 index 000000000..1fec20079 --- /dev/null +++ b/docs/assets/js/src/application.js @@ -0,0 +1,83 @@ +// NOTICE!! DO NOT USE ANY OF THIS JAVASCRIPT +// IT'S ALL JUST JUNK FOR OUR DOCS! +// ++++++++++++++++++++++++++++++++++++++++++ + +/*! + * JavaScript for Bootstrap's docs (http://getbootstrap.com) + * Copyright 2011-2015 Twitter, Inc. + * Licensed under the Creative Commons Attribution 3.0 Unported License. For + * details, see https://creativecommons.org/licenses/by/3.0/. + */ + +/* global Clipboard, anchors */ + +!function ($) { + 'use strict'; + + $(function () { + + // Tooltip and popover demos + $('.tooltip-demo').tooltip({ + selector: '[data-toggle="tooltip"]', + container: 'body' + }) + + $('[data-toggle="popover"]').popover() + + // Demos within modals + $('.tooltip-test').tooltip() + $('.popover-test').popover() + + // Indeterminate checkbox example + $('.bd-example-indeterminate [type="checkbox"]').prop('indeterminate', true) + + // Disable empty links in docs examples + $('.bd-example [href=#]').click(function (e) { + e.preventDefault() + }) + + // Insert copy to clipboard button before .highlight + $('.highlight').each(function () { + var btnHtml = 'Copy' + $(this).before(btnHtml) + $('.btn-clipboard').tooltip() + }) + + var clipboard = new Clipboard('.btn-clipboard', { + target: function (trigger) { + return trigger.parentNode.nextElementSibling + } + }) + + clipboard.on('success', function (e) { + $(e.trigger) + .attr('title', 'Copied!') + .tooltip('_fixTitle') + .tooltip('show') + .attr('title', 'Copy to clipboard') + .tooltip('_fixTitle') + + e.clearSelection() + }) + + clipboard.on('error', function (e) { + var fallbackMsg = /Mac/i.test(navigator.userAgent) ? 'Press \u2318 to copy' : 'Press Ctrl-C to copy' + + $(e.trigger) + .attr('title', fallbackMsg) + .tooltip('_fixTitle') + .tooltip('show') + .attr('title', 'Copy to clipboard') + .tooltip('_fixTitle') + }) + + }) + +}(jQuery) + +;(function () { + 'use strict'; + + anchors.options.placement = 'left'; + anchors.add('.bd-content > h1, .bd-content > h2, .bd-content > h3, .bd-content > h4, .bd-content > h5') +})(); diff --git a/docs/assets/js/vendor/anchor.min.js b/docs/assets/js/vendor/anchor.min.js new file mode 100644 index 000000000..e739e2dcc --- /dev/null +++ b/docs/assets/js/vendor/anchor.min.js @@ -0,0 +1,6 @@ +/*! + * AnchorJS - v2.0.0 - 2015-10-31 + * https://github.com/bryanbraun/anchorjs + * Copyright (c) 2015 Bryan Braun; Licensed MIT + */ +function AnchorJS(A){"use strict";function t(A){o.options.icon=o.options.hasOwnProperty("icon")?A.icon:"",o.options.visible=o.options.hasOwnProperty("visible")?A.visible:"hover",o.options.placement=o.options.hasOwnProperty("placement")?A.placement:"right",o.options.class=o.options.hasOwnProperty("class")?A.class:"",o.options.truncate=o.options.hasOwnProperty("truncate")?Math.floor(A.truncate):64}function e(){if(null===document.head.querySelector("style.anchorjs")){var A,t=document.createElement("style"),e=" .anchorjs-link { opacity: 0; text-decoration: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }",o=" *:hover > .anchorjs-link, .anchorjs-link:focus { opacity: 1; }",n=' @font-face { font-family: "anchorjs-icons"; font-style: normal; font-weight: normal; src: url(data:application/x-font-ttf;charset=utf-8;base64,AAEAAAALAIAAAwAwT1MvMg8SBTUAAAC8AAAAYGNtYXAWi9QdAAABHAAAAFRnYXNwAAAAEAAAAXAAAAAIZ2x5Zgq29TcAAAF4AAABNGhlYWQEZM3pAAACrAAAADZoaGVhBhUDxgAAAuQAAAAkaG10eASAADEAAAMIAAAAFGxvY2EAKACuAAADHAAAAAxtYXhwAAgAVwAAAygAAAAgbmFtZQ5yJ3cAAANIAAAB2nBvc3QAAwAAAAAFJAAAACAAAwJAAZAABQAAApkCzAAAAI8CmQLMAAAB6wAzAQkAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAABAAADpywPA/8AAQAPAAEAAAAABAAAAAAAAAAAAAAAgAAAAAAADAAAAAwAAABwAAQADAAAAHAADAAEAAAAcAAQAOAAAAAoACAACAAIAAQAg6cv//f//AAAAAAAg6cv//f//AAH/4xY5AAMAAQAAAAAAAAAAAAAAAQAB//8ADwABAAAAAAAAAAAAAgAANzkBAAAAAAEAAAAAAAAAAAACAAA3OQEAAAAAAQAAAAAAAAAAAAIAADc5AQAAAAACADEARAJTAsAAKwBUAAABIiYnJjQ/AT4BMzIWFxYUDwEGIicmND8BNjQnLgEjIgYPAQYUFxYUBw4BIwciJicmND8BNjIXFhQPAQYUFx4BMzI2PwE2NCcmNDc2MhcWFA8BDgEjARQGDAUtLXoWOR8fORYtLTgKGwoKCjgaGg0gEhIgDXoaGgkJBQwHdR85Fi0tOAobCgoKOBoaDSASEiANehoaCQkKGwotLXoWOR8BMwUFLYEuehYXFxYugC44CQkKGwo4GkoaDQ0NDXoaShoKGwoFBe8XFi6ALjgJCQobCjgaShoNDQ0NehpKGgobCgoKLYEuehYXAAEAAAABAACiToc1Xw889QALBAAAAAAA0XnFFgAAAADRecUWAAAAAAJTAsAAAAAIAAIAAAAAAAAAAQAAA8D/wAAABAAAAAAAAlMAAQAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAACAAAAAoAAMQAAAAAACgAUAB4AmgABAAAABQBVAAIAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAADgCuAAEAAAAAAAEADgAAAAEAAAAAAAIABwCfAAEAAAAAAAMADgBLAAEAAAAAAAQADgC0AAEAAAAAAAUACwAqAAEAAAAAAAYADgB1AAEAAAAAAAoAGgDeAAMAAQQJAAEAHAAOAAMAAQQJAAIADgCmAAMAAQQJAAMAHABZAAMAAQQJAAQAHADCAAMAAQQJAAUAFgA1AAMAAQQJAAYAHACDAAMAAQQJAAoANAD4YW5jaG9yanMtaWNvbnMAYQBuAGMAaABvAHIAagBzAC0AaQBjAG8AbgBzVmVyc2lvbiAxLjAAVgBlAHIAcwBpAG8AbgAgADEALgAwYW5jaG9yanMtaWNvbnMAYQBuAGMAaABvAHIAagBzAC0AaQBjAG8AbgBzYW5jaG9yanMtaWNvbnMAYQBuAGMAaABvAHIAagBzAC0AaQBjAG8AbgBzUmVndWxhcgBSAGUAZwB1AGwAYQByYW5jaG9yanMtaWNvbnMAYQBuAGMAaABvAHIAagBzAC0AaQBjAG8AbgBzRm9udCBnZW5lcmF0ZWQgYnkgSWNvTW9vbi4ARgBvAG4AdAAgAGcAZQBuAGUAcgBhAHQAZQBkACAAYgB5ACAASQBjAG8ATQBvAG8AbgAuAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==) format("truetype"); }',i=" [data-anchorjs-icon]::after { content: attr(data-anchorjs-icon); }";t.className="anchorjs",t.appendChild(document.createTextNode("")),A=document.head.querySelector('[rel="stylesheet"], style'),void 0===A?document.head.appendChild(t):document.head.insertBefore(t,A),t.sheet.insertRule(e,t.sheet.cssRules.length),t.sheet.insertRule(o,t.sheet.cssRules.length),t.sheet.insertRule(i,t.sheet.cssRules.length),t.sheet.insertRule(n,t.sheet.cssRules.length)}}var o=this;this.options=A||{},t(A),this.add=function(A){var o,n,i,s,a,r,l,c,h,g,B,u;if(t(this.options),A){if("string"!=typeof A)throw new Error("The selector provided to AnchorJS was invalid.")}else A="h1, h2, h3, h4, h5, h6";if(o=document.querySelectorAll(A),0===o.length)return!1;for(e(),n=document.querySelectorAll("[id]"),i=[].map.call(n,function(A){return A.id}),a=0;ar;r++)n[r].fn.apply(n[r].ctx,e);return this},off:function(t,e){var n=this.e||(this.e={}),r=n[t],o=[];if(r&&e)for(var i=0,a=r.length;a>i;i++)r[i].fn!==e&&r[i].fn._!==e&&o.push(r[i]);return o.length?n[t]=o:delete n[t],this}},e.exports=r},{}],8:[function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}n.__esModule=!0;var i=function(){function t(t,e){for(var n=0;n>>0;if("function"!=typeof e)throw TypeError();var r,i=arguments[1];for(r=0;n>r;r++)r in t&&e.call(i,t[r],r,t)}),function(e){var t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";e.atob=e.atob||function(e){e=String(e);var n,r=0,i=[],o=0,a=0;if(e=e.replace(/\s/g,""),e.length%4===0&&(e=e.replace(/=+$/,"")),e.length%4===1)throw Error("InvalidCharacterError");if(/[^+/0-9A-Za-z]/.test(e))throw Error("InvalidCharacterError");for(;r>16&255)),i.push(String.fromCharCode(o>>8&255)),i.push(String.fromCharCode(255&o)),a=0,o=0),r+=1;return 12===a?(o>>=4,i.push(String.fromCharCode(255&o))):18===a&&(o>>=2,i.push(String.fromCharCode(o>>8&255)),i.push(String.fromCharCode(255&o))),i.join("")},e.btoa=e.btoa||function(e){e=String(e);var n,r,i,o,a,s,l,d=0,h=[];if(/[^\x00-\xFF]/.test(e))throw Error("InvalidCharacterError");for(;d>2,a=(3&n)<<4|r>>4,s=(15&r)<<2|i>>6,l=63&i,d===e.length+2?(s=64,l=64):d===e.length+1&&(l=64),h.push(t.charAt(o),t.charAt(a),t.charAt(s),t.charAt(l));return h.join("")}}(e),Object.prototype.hasOwnProperty||(Object.prototype.hasOwnProperty=function(e){var t=this.__proto__||this.constructor.prototype;return e in this&&(!(e in t)||t[e]!==this[e])}),function(){if("performance"in e==!1&&(e.performance={}),Date.now=Date.now||function(){return(new Date).getTime()},"now"in e.performance==!1){var t=Date.now();performance.timing&&performance.timing.navigationStart&&(t=performance.timing.navigationStart),e.performance.now=function(){return Date.now()-t}}}(),e.requestAnimationFrame||(e.webkitRequestAnimationFrame?!function(e){e.requestAnimationFrame=function(t){return webkitRequestAnimationFrame(function(){t(e.performance.now())})},e.cancelAnimationFrame=webkitCancelAnimationFrame}(e):e.mozRequestAnimationFrame?!function(e){e.requestAnimationFrame=function(t){return mozRequestAnimationFrame(function(){t(e.performance.now())})},e.cancelAnimationFrame=mozCancelAnimationFrame}(e):!function(e){e.requestAnimationFrame=function(t){return e.setTimeout(t,1e3/60)},e.cancelAnimationFrame=e.clearTimeout}(e))}}(this),function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):"object"==typeof exports?exports.Holder=t():e.Holder=t()}(this,function(){return function(e){function t(r){if(n[r])return n[r].exports;var i=n[r]={exports:{},id:r,loaded:!1};return e[r].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){e.exports=n(1)},function(e,t,n){(function(t){function r(e,t,n,r){var a=i(n.substr(n.lastIndexOf(e.domain)),e);a&&o({mode:null,el:r,flags:a,engineSettings:t})}function i(e,t){var n={theme:k(M.settings.themes.gray,null),stylesheets:t.stylesheets,instanceOptions:t},r=e.split("?"),i=r[0].split("/");n.holderURL=e;var o=i[1],a=o.match(/([\d]+p?)x([\d]+p?)/);if(!a)return!1;if(n.fluid=-1!==o.indexOf("p"),n.dimensions={width:a[1].replace("p","%"),height:a[2].replace("p","%")},2===r.length){var s=v.parse(r[1]);if(s.bg&&(n.theme.background=w.parseColor(s.bg)),s.fg&&(n.theme.foreground=w.parseColor(s.fg)),s.bg&&!s.fg&&(n.autoFg=!0),s.theme&&n.instanceOptions.themes.hasOwnProperty(s.theme)&&(n.theme=k(n.instanceOptions.themes[s.theme],null)),s.text&&(n.text=s.text),s.textmode&&(n.textmode=s.textmode),s.size&&(n.size=s.size),s.font&&(n.font=s.font),s.align&&(n.align=s.align),n.nowrap=w.truthy(s.nowrap),n.auto=w.truthy(s.auto),n.outline=w.truthy(s.outline),w.truthy(s.random)){M.vars.cache.themeKeys=M.vars.cache.themeKeys||Object.keys(n.instanceOptions.themes);var l=M.vars.cache.themeKeys[0|Math.random()*M.vars.cache.themeKeys.length];n.theme=k(n.instanceOptions.themes[l],null)}}return n}function o(e){var t=e.mode,n=e.el,r=e.flags,i=e.engineSettings,o=r.dimensions,s=r.theme,l=o.width+"x"+o.height;if(t=null==t?r.fluid?"fluid":"image":t,null!=r.text&&(s.text=r.text,"object"===n.nodeName.toLowerCase())){for(var u=s.text.split("\\n"),c=0;c1){var w,b=0,x=0,A=0;g=new i.Group("line"+A),("left"===e.align||"right"===e.align)&&(v=e.width*(1-2*(1-M.vars.lineWrapRatio)));for(var C=0;C=v||E===!0)&&(t(c,g,b,c.properties.leading),c.add(g),b=0,x+=c.properties.leading,A+=1,g=new i.Group("line"+A),g.y=x),E!==!0&&(p.moveTo(b,0),b+=f.spaceWidth+k.width,g.add(p))}if(t(c,g,b,c.properties.leading),c.add(g),"left"===e.align)c.moveTo(e.width-m,null,null);else if("right"===e.align){for(w in c.children)g=c.children[w],g.moveTo(e.width-g.width,null,null);c.moveTo(0-(e.width-m),null,null)}else{for(w in c.children)g=c.children[w],g.moveTo((c.width-g.width)/2,null,null);c.moveTo((e.width-c.width)/2,null,null)}c.moveTo(null,(e.height-c.height)/2,null),(e.height-c.height)/2<0&&c.moveTo(null,0,null)}else p=new i.Text(e.text),g=new i.Group("line0"),g.add(p),c.add(g),"left"===e.align?c.moveTo(e.width-m,null,null):"right"===e.align?c.moveTo(0-(e.width-m),null,null):c.moveTo((e.width-f.boundingBox.width)/2,null,null),c.moveTo(null,(e.height-f.boundingBox.height)/2,null);return r}function l(e,t,n,r){var i=parseInt(e,10),o=parseInt(t,10),a=Math.max(i,o),s=Math.min(i,o),l=.8*Math.min(s,a*r);return Math.round(Math.max(n,l))}function d(e){var t;t=null==e||null==e.nodeType?M.vars.resizableImages:[e];for(var n=0,r=t.length;r>n;n++){var i=t[n];if(i.holderData){var o=i.holderData.flags,s=E(i);if(s){if(!i.holderData.resizeUpdate)continue;if(o.fluid&&o.auto){var l=i.holderData.fluidConfig;switch(l.mode){case"width":s.height=s.width/l.ratio;break;case"height":s.width=s.height*l.ratio}}var d={mode:"image",holderSettings:{dimensions:s,theme:o.theme,flags:o},el:i,engineSettings:i.holderData.engineSettings};"exact"==o.textmode&&(o.exactDimensions=s,d.holderSettings.dimensions=o.dimensions),a(d)}else f(i)}}}function h(e){if(e.holderData){var t=E(e);if(t){var n=e.holderData.flags,r={fluidHeight:"%"==n.dimensions.height.slice(-1),fluidWidth:"%"==n.dimensions.width.slice(-1),mode:null,initialDimensions:t};r.fluidWidth&&!r.fluidHeight?(r.mode="width",r.ratio=r.initialDimensions.width/parseFloat(n.dimensions.height)):!r.fluidWidth&&r.fluidHeight&&(r.mode="height",r.ratio=parseFloat(n.dimensions.width)/r.initialDimensions.height),e.holderData.fluidConfig=r}else f(e)}}function u(){var e,n=[],r=Object.keys(M.vars.invisibleImages);r.forEach(function(t){e=M.vars.invisibleImages[t],E(e)&&"img"==e.nodeName.toLowerCase()&&(n.push(e),delete M.vars.invisibleImages[t])}),n.length&&F.run({images:n}),setTimeout(function(){t.requestAnimationFrame(u)},10)}function c(){M.vars.visibilityCheckStarted||(t.requestAnimationFrame(u),M.vars.visibilityCheckStarted=!0)}function f(e){e.holderData.invisibleId||(M.vars.invisibleId+=1,M.vars.invisibleImages["i"+M.vars.invisibleId]=e,e.holderData.invisibleId=M.vars.invisibleId)}function p(e){M.vars.debounceTimer||e.call(this),M.vars.debounceTimer&&t.clearTimeout(M.vars.debounceTimer),M.vars.debounceTimer=t.setTimeout(function(){M.vars.debounceTimer=null,e.call(this)},M.setup.debounce)}function g(){p(function(){d(null)})}var m=n(2),v=n(3),y=n(4),w=n(5),b=n(6),x=n(7),S=n(8),A=n(9),C=n(10),k=w.extend,E=w.dimensionCheck,T=A.svg_ns,F={version:A.version,addTheme:function(e,t){return null!=e&&null!=t&&(M.settings.themes[e]=t),delete M.vars.cache.themeKeys,this},addImage:function(e,t){var n=x.getNodeArray(t);return n.forEach(function(t){var n=x.newEl("img"),r={};r[M.setup.dataAttr]=e,x.setAttr(n,r),t.appendChild(n)}),this},setResizeUpdate:function(e,t){e.holderData&&(e.holderData.resizeUpdate=!!t,e.holderData.resizeUpdate&&d(e))},run:function(e){e=e||{};var n={},a=k(M.settings,e);M.vars.preempted=!0,M.vars.dataAttr=a.dataAttr||M.setup.dataAttr,M.vars.lineWrapRatio=a.lineWrapRatio||M.setup.lineWrapRatio,n.renderer=a.renderer?a.renderer:M.setup.renderer,-1===M.setup.renderers.join(",").indexOf(n.renderer)&&(n.renderer=M.setup.supportsSVG?"svg":M.setup.supportsCanvas?"canvas":"html");var s=x.getNodeArray(a.images),l=x.getNodeArray(a.bgnodes),d=x.getNodeArray(a.stylenodes),h=x.getNodeArray(a.objects);return n.stylesheets=[],n.svgXMLStylesheet=!0,n.noFontFallback=a.noFontFallback?a.noFontFallback:!1,d.forEach(function(e){if(e.attributes.rel&&e.attributes.href&&"stylesheet"==e.attributes.rel.value){var t=e.attributes.href.value,r=x.newEl("a");r.href=t;var i=r.protocol+"//"+r.host+r.pathname+r.search;n.stylesheets.push(i)}}),l.forEach(function(e){if(t.getComputedStyle){var r=t.getComputedStyle(e,null).getPropertyValue("background-image"),s=e.getAttribute("data-background-src"),l=s||r,d=null,h=a.domain+"/",u=l.indexOf(h);if(0===u)d=l;else if(1===u&&"?"===l[0])d=l.slice(1);else{var c=l.substr(u).match(/([^\"]*)"?\)/);if(null!==c)d=c[1];else if(0===l.indexOf("url("))throw"Holder: unable to parse background URL: "+l}if(null!=d){var f=i(d,a);f&&o({mode:"background",el:e,flags:f,engineSettings:n})}}}),h.forEach(function(e){var t={};try{t.data=e.getAttribute("data"),t.dataSrc=e.getAttribute(M.vars.dataAttr)}catch(i){}var o=null!=t.data&&0===t.data.indexOf(a.domain),s=null!=t.dataSrc&&0===t.dataSrc.indexOf(a.domain);o?r(a,n,t.data,e):s&&r(a,n,t.dataSrc,e)}),s.forEach(function(e){var t={};try{t.src=e.getAttribute("src"),t.dataSrc=e.getAttribute(M.vars.dataAttr),t.rendered=e.getAttribute("data-holder-rendered")}catch(i){}var o=null!=t.src,s=null!=t.dataSrc&&0===t.dataSrc.indexOf(a.domain),l=null!=t.rendered&&"true"==t.rendered;o?0===t.src.indexOf(a.domain)?r(a,n,t.src,e):s&&(l?r(a,n,t.dataSrc,e):!function(e,t,n,i,o){w.imageExists(e,function(e){e||r(t,n,i,o)})}(t.src,a,n,t.dataSrc,e)):s&&r(a,n,t.dataSrc,e)}),this}},M={settings:{domain:"holder.js",images:"img",objects:"object",bgnodes:"body .holderjs",stylenodes:"head link.holderjs",themes:{gray:{background:"#EEEEEE",foreground:"#AAAAAA"},social:{background:"#3a5a97",foreground:"#FFFFFF"},industrial:{background:"#434A52",foreground:"#C2F200"},sky:{background:"#0D8FDB",foreground:"#FFFFFF"},vine:{background:"#39DBAC",foreground:"#1E292C"},lava:{background:"#F8591A",foreground:"#1C2846"}}},defaults:{size:10,units:"pt",scale:1/16}},j=function(){var e=null,t=null,n=null;return function(r){var i=r.root;if(M.setup.supportsSVG){var o=!1,a=function(e){return document.createTextNode(e)};(null==e||e.parentNode!==document.body)&&(o=!0),e=b.initSVG(e,i.properties.width,i.properties.height),e.style.display="block",o&&(t=x.newEl("text",T),n=a(null),x.setAttr(t,{x:0}),t.appendChild(n),e.appendChild(t),document.body.appendChild(e),e.style.visibility="hidden",e.style.position="absolute",e.style.top="-100%",e.style.left="-100%");var s=i.children.holderTextGroup,l=s.properties;x.setAttr(t,{y:l.font.size,style:w.cssProps({"font-weight":l.font.weight,"font-size":l.font.size+l.font.units,"font-family":l.font.family})}),n.nodeValue=l.text;var d=t.getBBox(),h=Math.ceil(d.width/(i.properties.width*M.vars.lineWrapRatio)),u=l.text.split(" "),c=l.text.match(/\\n/g);h+=null==c?0:c.length,n.nodeValue=l.text.replace(/[ ]+/g,"");var f=t.getComputedTextLength(),p=d.width-f,g=Math.round(p/Math.max(1,u.length-1)),m=[];if(h>1){n.nodeValue="";for(var v=0;v=0?t:1)}function o(e){x?i(e):S.push(e)}null==document.readyState&&document.addEventListener&&(document.addEventListener("DOMContentLoaded",function C(){document.removeEventListener("DOMContentLoaded",C,!1),document.readyState="complete"},!1),document.readyState="loading");var a=e.document,s=a.documentElement,l="load",d=!1,h="on"+l,u="complete",c="readyState",f="attachEvent",p="detachEvent",g="addEventListener",m="DOMContentLoaded",v="onreadystatechange",y="removeEventListener",w=g in a,b=d,x=d,S=[];if(a[c]===u)i(t);else if(w)a[g](m,n,d),e[g](l,n,d);else{a[f](v,n),e[f](h,n);try{b=null==e.frameElement&&s}catch(A){}b&&b.doScroll&&!function k(){if(!x){try{b.doScroll("left")}catch(e){return i(k,50)}r(),t()}}()}return o.version="1.4.0",o.isReady=function(){return x},o}e.exports="undefined"!=typeof window&&r(window)},function(e,t,n){var r=encodeURIComponent,i=decodeURIComponent,o=n(11),a=n(12),s=/(\w+)\[(\d+)\]/,l=/\w+\.\w+/;t.parse=function(e){if("string"!=typeof e)return{};if(e=o(e),""===e)return{};"?"===e.charAt(0)&&(e=e.slice(1));for(var t={},n=e.split("&"),r=0;r=0;r--)n=e.charCodeAt(r),t.unshift(n>128?["",n,";"].join(""):e[r]);return t.join("")},t.imageExists=function(e,t){var n=new Image;n.onerror=function(){t.call(this,!1)},n.onload=function(){t.call(this,!0)},n.src=e},t.decodeHtmlEntity=function(e){return e.replace(/(\d+);/g,function(e,t){return String.fromCharCode(t)})},t.dimensionCheck=function(e){var t={height:e.clientHeight,width:e.clientWidth};return t.height&&t.width?t:!1},t.truthy=function(e){return"string"==typeof e?"true"===e||"yes"===e||"1"===e||"on"===e||"✓"===e:!!e},t.parseColor=function(e){var t,n=/(^(?:#?)[0-9a-f]{6}$)|(^(?:#?)[0-9a-f]{3}$)/i,r=/^rgb\((\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*\)$/,i=/^rgba\((\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(0\.\d{1,}|1)\)$/,o=e.match(n);return null!==o?(t=o[1]||o[2],"#"!==t[0]?"#"+t:t):(o=e.match(r),null!==o?t="rgb("+o.slice(1).join(",")+")":(o=e.match(i),null!==o?t="rgba("+o.slice(1).join(",")+")":null))}},function(e,t,n){(function(e){var r=n(7),i="http://www.w3.org/2000/svg",o=8;t.initSVG=function(e,t,n){var a,s,l=!1;e&&e.querySelector?(s=e.querySelector("style"),null===s&&(l=!0)):(e=r.newEl("svg",i),l=!0),l&&(a=r.newEl("defs",i),s=r.newEl("style",i),r.setAttr(s,{type:"text/css"}),a.appendChild(s),e.appendChild(a)),e.webkitMatchesSelector&&e.setAttribute("xmlns",i);for(var d=0;d=0;l--){var d=s.createProcessingInstruction("xml-stylesheet",'href="'+a[l]+'" rel="stylesheet"');s.insertBefore(d,s.firstChild)}s.removeChild(s.documentElement),o=i.serializeToString(s)}var h=i.serializeToString(t);return h=h.replace(/\&(\#[0-9]{2,}\;)/g,"&$1"),o+h}}}).call(t,function(){return this}())},function(e,t,n){(function(e){t.newEl=function(t,n){return e.document?null==n?e.document.createElement(t):e.document.createElementNS(n,t):void 0},t.setAttr=function(e,t){for(var n in t)e.setAttribute(n,t[n])},t.createXML=function(){return e.DOMParser?(new DOMParser).parseFromString("","application/xml"):void 0},t.getNodeArray=function(t){var n=null;return"string"==typeof t?n=document.querySelectorAll(t):e.NodeList&&t instanceof e.NodeList?n=t:e.Node&&t instanceof e.Node?n=[t]:e.HTMLCollection&&t instanceof e.HTMLCollection?n=t:t instanceof Array?n=t:null===t&&(n=[]),n=Array.prototype.slice.call(n)}}).call(t,function(){return this}())},function(e,t,n){var r=function(e,t){"string"==typeof e&&(this.original=e,"#"===e.charAt(0)&&(e=e.slice(1)),/[^a-f0-9]+/i.test(e)||(3===e.length&&(e=e.replace(/./g,"$&$&")),6===e.length&&(this.alpha=1,t&&t.alpha&&(this.alpha=t.alpha),this.set(parseInt(e,16)))))};r.rgb2hex=function(e,t,n){function r(e){var t=(0|e).toString(16);return 16>e&&(t="0"+t),t}return[e,t,n].map(r).join("")},r.hsl2rgb=function(e,t,n){var r=e/60,i=(1-Math.abs(2*n-1))*t,o=i*(1-Math.abs(parseInt(r)%2-1)),a=n-i/2,s=0,l=0,d=0;return r>=0&&1>r?(s=i,l=o):r>=1&&2>r?(s=o,l=i):r>=2&&3>r?(l=i,d=o):r>=3&&4>r?(l=o,d=i):r>=4&&5>r?(s=o,d=i):r>=5&&6>r&&(s=i,d=o),s+=a,l+=a,d+=a,s=parseInt(255*s),l=parseInt(255*l),d=parseInt(255*d),[s,l,d]},r.prototype.set=function(e){this.raw=e;var t=(16711680&this.raw)>>16,n=(65280&this.raw)>>8,r=255&this.raw,i=.2126*t+.7152*n+.0722*r,o=-.09991*t-.33609*n+.436*r,a=.615*t-.55861*n-.05639*r;return this.rgb={r:t,g:n,b:r},this.yuv={y:i,u:o,v:a},this},r.prototype.lighten=function(e){var t=Math.min(1,Math.max(0,Math.abs(e)))*(0>e?-1:1),n=255*t|0,i=Math.min(255,Math.max(0,this.rgb.r+n)),o=Math.min(255,Math.max(0,this.rgb.g+n)),a=Math.min(255,Math.max(0,this.rgb.b+n)),s=r.rgb2hex(i,o,a);return new r(s)},r.prototype.toHex=function(e){return(e?"#":"")+this.raw.toString(16)},r.prototype.lighterThan=function(e){return e instanceof r||(e=new r(e)),this.yuv.y>e.yuv.y},r.prototype.blendAlpha=function(e){e instanceof r||(e=new r(e));var t=e,n=this,i=t.alpha*t.rgb.r+(1-t.alpha)*n.rgb.r,o=t.alpha*t.rgb.g+(1-t.alpha)*n.rgb.g,a=t.alpha*t.rgb.b+(1-t.alpha)*n.rgb.b;return new r(r.rgb2hex(i,o,a))},e.exports=r},function(e,t,n){e.exports={version:"2.8.2",svg_ns:"http://www.w3.org/2000/svg"}},function(e,t,n){(function(t){var r=n(6),i=n(7),o=n(5),a=n(9),s=a.svg_ns,l="\nCreated with Holder.js "+a.version+".\nLearn more at http://holderjs.com\n(c) 2012-2015 Ivan Malopinsky - http://imsky.co\n";e.exports=function(){if(t.XMLSerializer){var e=i.createXML(),n=r.initSVG(null,0,0),a=i.newEl("rect",s);return n.appendChild(a),function(t,d){var h=t.root;r.initSVG(n,h.properties.width,h.properties.height);for(var u=n.querySelectorAll("g"),c=0;c=0}this.matches=function(string,crit){return"string"!=typeof string?!1:(string=string.trim(),matchesString(string,crit))}}module.exports=new LiteralSearchStrategy},{}],6:[function(require,module,exports){"use strict";function setOptions(_options){options.pattern=_options.pattern||options.pattern,options.template=_options.template||options.template,"function"==typeof _options.middleware&&(options.middleware=_options.middleware)}function compile(data){return options.template.replace(options.pattern,function(match,prop){var value=options.middleware(prop,data[prop],options.template);return void 0!==value?value:data[prop]||match})}module.exports={compile:compile,setOptions:setOptions};var options={};options.pattern=/\{(.*?)\}/g,options.template="",options.middleware=function(){}},{}],7:[function(require,module,exports){!function(window,document,undefined){"use strict";function initWithJSON(json){repository.put(json),registerInput()}function initWithURL(url){jsonLoader.load(url,function(err,json){err&&throwError("failed to get JSON ("+url+")"),initWithJSON(json)})}function emptyResultsContainer(){options.resultsContainer.innerHTML=""}function appendToResultsContainer(text){options.resultsContainer.innerHTML+=text}function registerInput(){options.searchInput.addEventListener("keyup",function(e){emptyResultsContainer(),e.target.value.length>0&&render(repository.search(e.target.value))})}function render(results){if(0===results.length)return appendToResultsContainer(options.noResultsText);for(var i=0;i{title}',templateMiddleware:function(){},noResultsText:"No results found",limit:10,fuzzy:!1,exclude:[]},requiredOptions=["searchInput","resultsContainer","json"],templater=require("./Templater"),repository=require("./Repository"),jsonLoader=require("./JSONLoader"),optionsValidator=require("./OptionsValidator")({required:requiredOptions}),utils=require("./utils");window.SimpleJekyllSearch=function(_options){var errors=optionsValidator.validate(_options);errors.length>0&&throwError("You must specify the following required options: "+requiredOptions),options=utils.merge(options,_options),templater.setOptions({template:options.searchResultTemplate,middleware:options.templateMiddleware}),repository.setOptions({fuzzy:options.fuzzy,limit:options.limit}),utils.isJSON(options.json)?initWithJSON(options.json):initWithURL(options.json)},window.SimpleJekyllSearch.init=window.SimpleJekyllSearch}(window,document)},{"./JSONLoader":1,"./OptionsValidator":2,"./Repository":3,"./Templater":6,"./utils":8}],8:[function(require,module,exports){"use strict";function merge(defaultParams,mergeParams){var mergedOptions={};for(var option in defaultParams)mergedOptions[option]=defaultParams[option],void 0!==mergeParams[option]&&(mergedOptions[option]=mergeParams[option]);return mergedOptions}function isJSON(json){try{return json instanceof Object&&JSON.parse(JSON.stringify(json))?!0:!1}catch(e){return!1}}module.exports={merge:merge,isJSON:isJSON}},{}]},{},[7]); \ No newline at end of file diff --git a/docs/assets/js/vendor/jquery.min.js b/docs/assets/js/vendor/jquery.min.js new file mode 100644 index 000000000..49990d6e1 --- /dev/null +++ b/docs/assets/js/vendor/jquery.min.js @@ -0,0 +1,4 @@ +/*! jQuery v2.1.4 | (c) 2005, 2015 jQuery Foundation, Inc. | jquery.org/license */ +!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l=a.document,m="2.1.4",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return!n.isArray(a)&&a-parseFloat(a)+1>=0},isPlainObject:function(a){return"object"!==n.type(a)||a.nodeType||n.isWindow(a)?!1:a.constructor&&!j.call(a.constructor.prototype,"isPrototypeOf")?!1:!0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=l.createElement("script"),b.text=a,l.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:g.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(e=d.call(arguments,2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:k}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b="length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,aa=/[+~]/,ba=/'|\\/g,ca=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),da=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ea=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fa){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(ba,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+ra(o[l]);w=aa.test(a)&&pa(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",ea,!1):e.attachEvent&&e.attachEvent("onunload",ea)),p=!f(g),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?la(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ca,da),a[3]=(a[3]||a[4]||a[5]||"").replace(ca,da),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ca,da).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(ca,da),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return W.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(ca,da).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:oa(function(){return[0]}),last:oa(function(a,b){return[b-1]}),eq:oa(function(a,b,c){return[0>c?c+b:c]}),even:oa(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:oa(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:oa(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:oa(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function sa(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function ta(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ua(a,b,c){for(var d=0,e=b.length;e>d;d++)ga(a,b[d],c);return c}function va(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wa(a,b,c,d,e,f){return d&&!d[u]&&(d=wa(d)),e&&!e[u]&&(e=wa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ua(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:va(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=va(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=va(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sa(function(a){return a===b},h,!0),l=sa(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sa(ta(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wa(i>1&&ta(m),i>1&&ra(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xa(a.slice(i,e)),f>e&&xa(a=a.slice(e)),f>e&&ra(a))}m.push(c)}return ta(m)}function ya(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=va(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&ga.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,ya(e,d)),f.selector=a}return f},i=ga.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ca,da),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ca,da),aa.test(j[0].type)&&pa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&ra(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,aa.test(a)&&pa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ja(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return g.call(b,a)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:l,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}return d=l.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=l,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};A.prototype=n.fn,y=n(l);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?g.call(n(a),this[0]):g.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(C[a]||n.unique(e),B.test(a)&&e.reverse()),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return n.each(a.match(E)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(b=a.memory&&l,c=!0,g=e||0,e=0,f=h.length,d=!0;h&&f>g;g++)if(h[g].apply(l[0],l[1])===!1&&a.stopOnFalse){b=!1;break}d=!1,h&&(i?i.length&&j(i.shift()):b?h=[]:k.disable())},k={add:function(){if(h){var c=h.length;!function g(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&g(c)})}(arguments),d?f=h.length:b&&(e=c,j(b))}return this},remove:function(){return h&&n.each(arguments,function(a,b){var c;while((c=n.inArray(b,h,c))>-1)h.splice(c,1),d&&(f>=c&&f--,g>=c&&g--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],f=0,this},disable:function(){return h=i=b=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,b||k.disable(),this},locked:function(){return!i},fireWith:function(a,b){return!h||c&&!i||(b=b||[],b=[a,b.slice?b.slice():b],d?i.push(b):j(b)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!c}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(H.resolveWith(l,[n]),n.fn.triggerHandler&&(n(l).triggerHandler("ready"),n(l).off("ready"))))}});function I(){l.removeEventListener("DOMContentLoaded",I,!1),a.removeEventListener("load",I,!1),n.ready()}n.ready.promise=function(b){return H||(H=n.Deferred(),"complete"===l.readyState?setTimeout(n.ready):(l.addEventListener("DOMContentLoaded",I,!1),a.addEventListener("load",I,!1))),H.promise(b)},n.ready.promise();var J=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f};n.acceptData=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function K(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=n.expando+K.uid++}K.uid=1,K.accepts=n.acceptData,K.prototype={key:function(a){if(!K.accepts(a))return 0;var b={},c=a[this.expando];if(!c){c=K.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,n.extend(a,b)}}return this.cache[c]||(this.cache[c]={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache[e];if("string"==typeof b)f[b]=c;else if(n.isEmptyObject(f))n.extend(this.cache[e],b);else for(d in b)f[d]=b[d];return f},get:function(a,b){var c=this.cache[this.key(a)];return void 0===b?c:c[b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache[f];if(void 0===b)this.cache[f]={};else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(E)||[])),c=d.length;while(c--)delete g[d[c]]}},hasData:function(a){return!n.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var L=new K,M=new K,N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(O,"-$1").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}M.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return M.hasData(a)||L.hasData(a)},data:function(a,b,c){ +return M.access(a,b,c)},removeData:function(a,b){M.remove(a,b)},_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=M.get(f),1===f.nodeType&&!L.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));L.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=n.camelCase(a);if(f&&void 0===b){if(c=M.get(f,a),void 0!==c)return c;if(c=M.get(f,d),void 0!==c)return c;if(c=P(f,d,void 0),void 0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-1!==a.indexOf("-")&&void 0!==c&&M.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=L.get(a,b),c&&(!d||n.isArray(c)?d=L.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return L.get(a,c)||L.access(a,c,{empty:n.Callbacks("once memory").add(function(){L.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthx",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var U="undefined";k.focusinBubbles="onfocusin"in a;var V=/^key/,W=/^(?:mouse|pointer|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\.(.+)|)$/;function Z(){return!0}function $(){return!1}function _(){try{return l.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof n!==U&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(E)||[""],j=b.length;while(j--)h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g,!1)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&(delete r.handle,L.remove(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,m,o,p=[d||l],q=j.call(b,"type")?b.type:b,r=j.call(b,"namespace")?b.namespace.split("."):[];if(g=h=d=d||l,3!==d.nodeType&&8!==d.nodeType&&!X.test(q+n.event.triggered)&&(q.indexOf(".")>=0&&(r=q.split("."),q=r.shift(),r.sort()),k=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=r.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},e||!o.trigger||o.trigger.apply(d,c)!==!1)){if(!e&&!o.noBubble&&!n.isWindow(d)){for(i=o.delegateType||q,X.test(i+q)||(g=g.parentNode);g;g=g.parentNode)p.push(g),h=g;h===(d.ownerDocument||l)&&p.push(h.defaultView||h.parentWindow||a)}f=0;while((g=p[f++])&&!b.isPropagationStopped())b.type=f>1?i:o.bindType||q,m=(L.get(g,"events")||{})[b.type]&&L.get(g,"handle"),m&&m.apply(g,c),m=k&&g[k],m&&m.apply&&n.acceptData(g)&&(b.result=m.apply(g,c),b.result===!1&&b.preventDefault());return b.type=q,e||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!n.acceptData(d)||k&&n.isFunction(d[q])&&!n.isWindow(d)&&(h=d[k],h&&(d[k]=null),n.event.triggered=q,d[q](),n.event.triggered=void 0,h&&(d[k]=h)),b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(L.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(g.namespace))&&(a.handleObj=g,a.data=g.data,e=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(a.result=e)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!==this;i=i.parentNode||this)if(i.disabled!==!0||"click"!==a.type){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>=0:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h]*)\/>/gi,ba=/<([\w:]+)/,ca=/<|?\w+;/,da=/<(?:script|style|link)/i,ea=/checked\s*(?:[^=]|=\s*.checked.)/i,fa=/^$|\/(?:java|ecma)script/i,ga=/^true\/(.*)/,ha=/^\s*\s*$/g,ia={option:[1,"",""],thead:[1,"",""],col:[2,"",""],tr:[2,"",""],td:[3,"",""],_default:[0,"",""]};ia.optgroup=ia.option,ia.tbody=ia.tfoot=ia.colgroup=ia.caption=ia.thead,ia.th=ia.td;function ja(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function ka(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function la(a){var b=ga.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function ma(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],"globalEval",!b||L.get(b[c],"globalEval"))}function na(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}M.hasData(a)&&(h=M.access(a),i=n.extend({},h),M.set(b,i))}}function oa(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function pa(a,b){var c=b.nodeName.toLowerCase();"input"===c&&T.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}n.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=oa(h),f=oa(a),d=0,e=f.length;e>d;d++)pa(f[d],g[d]);if(b)if(c)for(f=f||oa(a),g=g||oa(h),d=0,e=f.length;e>d;d++)na(f[d],g[d]);else na(a,h);return g=oa(h,"script"),g.length>0&&ma(g,!i&&oa(a,"script")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=0,o=a.length;o>m;m++)if(e=a[m],e||0===e)if("object"===n.type(e))n.merge(l,e.nodeType?[e]:e);else if(ca.test(e)){f=f||k.appendChild(b.createElement("div")),g=(ba.exec(e)||["",""])[1].toLowerCase(),h=ia[g]||ia._default,f.innerHTML=h[1]+e.replace(aa,"<$1>$2>")+h[2],j=h[0];while(j--)f=f.lastChild;n.merge(l,f.childNodes),f=k.firstChild,f.textContent=""}else l.push(b.createTextNode(e));k.textContent="",m=0;while(e=l[m++])if((!d||-1===n.inArray(e,d))&&(i=n.contains(e.ownerDocument,e),f=oa(k.appendChild(e),"script"),i&&ma(f),c)){j=0;while(e=f[j++])fa.test(e.type||"")&&c.push(e)}return k},cleanData:function(a){for(var b,c,d,e,f=n.event.special,g=0;void 0!==(c=a[g]);g++){if(n.acceptData(c)&&(e=c[L.expando],e&&(b=L.cache[e]))){if(b.events)for(d in b.events)f[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);L.cache[e]&&delete L.cache[e]}delete M.cache[c[M.expando]]}}}),n.fn.extend({text:function(a){return J(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=a)})},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=ja(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=ja(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(oa(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&ma(oa(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(oa(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return J(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!da.test(a)&&!ia[(ba.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(aa,"<$1>$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(oa(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(oa(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,m=this,o=l-1,p=a[0],q=n.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&ea.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(c=n.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(f=n.map(oa(c,"script"),ka),g=f.length;l>j;j++)h=c,j!==o&&(h=n.clone(h,!0,!0),g&&n.merge(f,oa(h,"script"))),b.call(this[j],h,j);if(g)for(i=f[f.length-1].ownerDocument,n.map(f,la),j=0;g>j;j++)h=f[j],fa.test(h.type||"")&&!L.access(h,"globalEval")&&n.contains(i,h)&&(h.src?n._evalUrl&&n._evalUrl(h.src):n.globalEval(h.textContent.replace(ha,"")))}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),g=e.length-1,h=0;g>=h;h++)c=h===g?this:this.clone(!0),n(e[h])[b](c),f.apply(d,c.get());return this.pushStack(d)}});var qa,ra={};function sa(b,c){var d,e=n(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:n.css(e[0],"display");return e.detach(),f}function ta(a){var b=l,c=ra[a];return c||(c=sa(a,b),"none"!==c&&c||(qa=(qa||n("")).appendTo(b.documentElement),b=qa[0].contentDocument,b.write(),b.close(),c=sa(a,b),qa.detach()),ra[a]=c),c}var ua=/^margin/,va=new RegExp("^("+Q+")(?!px)[a-z%]+$","i"),wa=function(b){return b.ownerDocument.defaultView.opener?b.ownerDocument.defaultView.getComputedStyle(b,null):a.getComputedStyle(b,null)};function xa(a,b,c){var d,e,f,g,h=a.style;return c=c||wa(a),c&&(g=c.getPropertyValue(b)||c[b]),c&&(""!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),va.test(g)&&ua.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0!==g?g+"":g}function ya(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d=l.documentElement,e=l.createElement("div"),f=l.createElement("div");if(f.style){f.style.backgroundClip="content-box",f.cloneNode(!0).style.backgroundClip="",k.clearCloneStyle="content-box"===f.style.backgroundClip,e.style.cssText="border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;position:absolute",e.appendChild(f);function g(){f.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",f.innerHTML="",d.appendChild(e);var g=a.getComputedStyle(f,null);b="1%"!==g.top,c="4px"===g.width,d.removeChild(e)}a.getComputedStyle&&n.extend(k,{pixelPosition:function(){return g(),b},boxSizingReliable:function(){return null==c&&g(),c},reliableMarginRight:function(){var b,c=f.appendChild(l.createElement("div"));return c.style.cssText=f.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",c.style.marginRight=c.style.width="0",f.style.width="1px",d.appendChild(e),b=!parseFloat(a.getComputedStyle(c,null).marginRight),d.removeChild(e),f.removeChild(c),b}})}}(),n.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var za=/^(none|table(?!-c[ea]).+)/,Aa=new RegExp("^("+Q+")(.*)$","i"),Ba=new RegExp("^([+-])=("+Q+")","i"),Ca={position:"absolute",visibility:"hidden",display:"block"},Da={letterSpacing:"0",fontWeight:"400"},Ea=["Webkit","O","Moz","ms"];function Fa(a,b){if(b in a)return b;var c=b[0].toUpperCase()+b.slice(1),d=b,e=Ea.length;while(e--)if(b=Ea[e]+c,b in a)return b;return d}function Ga(a,b,c){var d=Aa.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Ha(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+R[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+R[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+R[f]+"Width",!0,e))):(g+=n.css(a,"padding"+R[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+R[f]+"Width",!0,e)));return g}function Ia(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=wa(a),g="border-box"===n.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=xa(a,b,f),(0>e||null==e)&&(e=a.style[b]),va.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Ha(a,b,c||(g?"border":"content"),d,f)+"px"}function Ja(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=L.get(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&S(d)&&(f[g]=L.access(d,"olddisplay",ta(d.nodeName)))):(e=S(d),"none"===c&&e||L.set(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=xa(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;return b=n.cssProps[h]||(n.cssProps[h]=Fa(i,h)),g=n.cssHooks[b]||n.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b]:(f=typeof c,"string"===f&&(e=Ba.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(n.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||n.cssNumber[h]||(c+="px"),k.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=Fa(a.style,h)),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=xa(a,b,d)),"normal"===e&&b in Da&&(e=Da[b]),""===c||c?(f=parseFloat(e),c===!0||n.isNumeric(f)?f||0:e):e}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?za.test(n.css(a,"display"))&&0===a.offsetWidth?n.swap(a,Ca,function(){return Ia(a,b,d)}):Ia(a,b,d):void 0},set:function(a,c,d){var e=d&&wa(a);return Ga(a,c,d?Ha(a,b,d,"border-box"===n.css(a,"boxSizing",!1,e),e):0)}}}),n.cssHooks.marginRight=ya(k.reliableMarginRight,function(a,b){return b?n.swap(a,{display:"inline-block"},xa,[a,"marginRight"]):void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+R[d]+b]=f[d]||f[d-2]||f[0];return e}},ua.test(a)||(n.cssHooks[a+b].set=Ga)}),n.fn.extend({css:function(a,b){return J(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=wa(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)},a,b,arguments.length>1)},show:function(){return Ja(this,!0)},hide:function(){return Ja(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){S(this)?n(this).show():n(this).hide()})}});function Ka(a,b,c,d,e){return new Ka.prototype.init(a,b,c,d,e)}n.Tween=Ka,Ka.prototype={constructor:Ka,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=Ka.propHooks[this.prop];return a&&a.get?a.get(this):Ka.propHooks._default.get(this)},run:function(a){var b,c=Ka.propHooks[this.prop];return this.options.duration?this.pos=b=n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Ka.propHooks._default.set(this),this}},Ka.prototype.init.prototype=Ka.prototype,Ka.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[n.cssProps[a.prop]]||n.cssHooks[a.prop])?n.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Ka.propHooks.scrollTop=Ka.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},n.fx=Ka.prototype.init,n.fx.step={};var La,Ma,Na=/^(?:toggle|show|hide)$/,Oa=new RegExp("^(?:([+-])=|)("+Q+")([a-z%]*)$","i"),Pa=/queueHooks$/,Qa=[Va],Ra={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=Oa.exec(b),f=e&&e[3]||(n.cssNumber[a]?"":"px"),g=(n.cssNumber[a]||"px"!==f&&+d)&&Oa.exec(n.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,n.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function Sa(){return setTimeout(function(){La=void 0}),La=n.now()}function Ta(a,b){var c,d=0,e={height:a};for(b=b?1:0;4>d;d+=2-b)c=R[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function Ua(a,b,c){for(var d,e=(Ra[b]||[]).concat(Ra["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function Va(a,b,c){var d,e,f,g,h,i,j,k,l=this,m={},o=a.style,p=a.nodeType&&S(a),q=L.get(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,l.always(function(){l.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=n.css(a,"display"),k="none"===j?L.get(a,"olddisplay")||ta(a.nodeName):j,"inline"===k&&"none"===n.css(a,"float")&&(o.display="inline-block")),c.overflow&&(o.overflow="hidden",l.always(function(){o.overflow=c.overflow[0],o.overflowX=c.overflow[1],o.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],Na.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(p?"hide":"show")){if("show"!==e||!q||void 0===q[d])continue;p=!0}m[d]=q&&q[d]||n.style(a,d)}else j=void 0;if(n.isEmptyObject(m))"inline"===("none"===j?ta(a.nodeName):j)&&(o.display=j);else{q?"hidden"in q&&(p=q.hidden):q=L.access(a,"fxshow",{}),f&&(q.hidden=!p),p?n(a).show():l.done(function(){n(a).hide()}),l.done(function(){var b;L.remove(a,"fxshow");for(b in m)n.style(a,b,m[b])});for(d in m)g=Ua(p?q[d]:0,d,l),d in q||(q[d]=g.start,p&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function Wa(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function Xa(a,b,c){var d,e,f=0,g=Qa.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=La||Sa(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:La||Sa(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(Wa(k,j.opts.specialEasing);g>f;f++)if(d=Qa[f].call(j,a,k,j.opts))return d;return n.map(k,Ua,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(Xa,{tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],Ra[c]=Ra[c]||[],Ra[c].unshift(b)},prefilter:function(a,b){b?Qa.unshift(a):Qa.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(S).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=Xa(this,n.extend({},a),f);(e||L.get(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=L.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&Pa.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=L.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(Ta(b,!0),a,d,e)}}),n.each({slideDown:Ta("show"),slideUp:Ta("hide"),slideToggle:Ta("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=0,c=n.timers;for(La=n.now();b1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===U?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),d=n.attrHooks[b]||(n.expr.match.bool.test(b)?Za:Ya)), +void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=n.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void n.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)&&(a[d]=!1),a.removeAttribute(c)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),Za={set:function(a,b,c){return b===!1?n.removeAttr(a,c):a.setAttribute(c,c),c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=$a[b]||n.find.attr;$a[b]=function(a,b,d){var e,f;return d||(f=$a[b],$a[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,$a[b]=f),e}});var _a=/^(?:input|select|textarea|button)$/i;n.fn.extend({prop:function(a,b){return J(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[n.propFix[a]||a]})}}),n.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!n.isXMLDoc(a),f&&(b=n.propFix[b]||b,e=n.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){return a.hasAttribute("tabindex")||_a.test(a.nodeName)||a.href?a.tabIndex:-1}}}}),k.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this});var ab=/[\t\r\n\f]/g;n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h="string"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ab," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=n.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0===arguments.length||"string"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ab," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?n.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(n.isFunction(a)?function(c){n(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=n(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===U||"boolean"===c)&&(this.className&&L.set(this,"__className__",this.className),this.className=this.className||a===!1?"":L.get(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(ab," ").indexOf(b)>=0)return!0;return!1}});var bb=/\r/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(bb,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.trim(n.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=n.inArray(d.value,f)>=0)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>=0:void 0}},k.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var cb=n.now(),db=/\?/;n.parseJSON=function(a){return JSON.parse(a+"")},n.parseXML=function(a){var b,c;if(!a||"string"!=typeof a)return null;try{c=new DOMParser,b=c.parseFromString(a,"text/xml")}catch(d){b=void 0}return(!b||b.getElementsByTagName("parsererror").length)&&n.error("Invalid XML: "+a),b};var eb=/#.*$/,fb=/([?&])_=[^&]*/,gb=/^(.*?):[ \t]*([^\r\n]*)$/gm,hb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,ib=/^(?:GET|HEAD)$/,jb=/^\/\//,kb=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,lb={},mb={},nb="*/".concat("*"),ob=a.location.href,pb=kb.exec(ob.toLowerCase())||[];function qb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(E)||[];if(n.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function rb(a,b,c,d){var e={},f=a===mb;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function sb(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&n.extend(!0,a,d),a}function tb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function ub(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:ob,type:"GET",isLocal:hb.test(pb[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":nb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?sb(sb(a,n.ajaxSettings),b):sb(n.ajaxSettings,a)},ajaxPrefilter:qb(lb),ajaxTransport:qb(mb),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=n.ajaxSetup({},b),l=k.context||k,m=k.context&&(l.nodeType||l.jquery)?n(l):n.event,o=n.Deferred(),p=n.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!f){f={};while(b=gb.exec(e))f[b[1].toLowerCase()]=b[2]}b=f[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?e:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return c&&c.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||ob)+"").replace(eb,"").replace(jb,pb[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=n.trim(k.dataType||"*").toLowerCase().match(E)||[""],null==k.crossDomain&&(h=kb.exec(k.url.toLowerCase()),k.crossDomain=!(!h||h[1]===pb[1]&&h[2]===pb[2]&&(h[3]||("http:"===h[1]?"80":"443"))===(pb[3]||("http:"===pb[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=n.param(k.data,k.traditional)),rb(lb,k,b,v),2===t)return v;i=n.event&&k.global,i&&0===n.active++&&n.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!ib.test(k.type),d=k.url,k.hasContent||(k.data&&(d=k.url+=(db.test(d)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=fb.test(d)?d.replace(fb,"$1_="+cb++):d+(db.test(d)?"&":"?")+"_="+cb++)),k.ifModified&&(n.lastModified[d]&&v.setRequestHeader("If-Modified-Since",n.lastModified[d]),n.etag[d]&&v.setRequestHeader("If-None-Match",n.etag[d])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+nb+"; q=0.01":""):k.accepts["*"]);for(j in k.headers)v.setRequestHeader(j,k.headers[j]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(j in{success:1,error:1,complete:1})v[j](k[j]);if(c=rb(mb,k,b,v)){v.readyState=1,i&&m.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,c.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,f,h){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),c=void 0,e=h||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,f&&(u=tb(k,v,f)),u=ub(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(n.lastModified[d]=w),w=v.getResponseHeader("etag"),w&&(n.etag[d]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,i&&m.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),i&&(m.trigger("ajaxComplete",[v,k]),--n.active||n.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){var b;return n.isFunction(a)?this.each(function(b){n(this).wrapAll(a.call(this,b))}):(this[0]&&(b=n(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this)},wrapInner:function(a){return this.each(n.isFunction(a)?function(b){n(this).wrapInner(a.call(this,b))}:function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}}),n.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var vb=/%20/g,wb=/\[\]$/,xb=/\r?\n/g,yb=/^(?:submit|button|image|reset|file)$/i,zb=/^(?:input|select|textarea|keygen)/i;function Ab(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||wb.test(a)?d(a,e):Ab(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)Ab(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)Ab(c,a[c],b,e);return d.join("&").replace(vb,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&zb.test(this.nodeName)&&!yb.test(a)&&(this.checked||!T.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(xb,"\r\n")}}):{name:b.name,value:c.replace(xb,"\r\n")}}).get()}}),n.ajaxSettings.xhr=function(){try{return new XMLHttpRequest}catch(a){}};var Bb=0,Cb={},Db={0:200,1223:204},Eb=n.ajaxSettings.xhr();a.attachEvent&&a.attachEvent("onunload",function(){for(var a in Cb)Cb[a]()}),k.cors=!!Eb&&"withCredentials"in Eb,k.ajax=Eb=!!Eb,n.ajaxTransport(function(a){var b;return k.cors||Eb&&!a.crossDomain?{send:function(c,d){var e,f=a.xhr(),g=++Bb;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)f.setRequestHeader(e,c[e]);b=function(a){return function(){b&&(delete Cb[g],b=f.onload=f.onerror=null,"abort"===a?f.abort():"error"===a?d(f.status,f.statusText):d(Db[f.status]||f.status,f.statusText,"string"==typeof f.responseText?{text:f.responseText}:void 0,f.getAllResponseHeaders()))}},f.onload=b(),f.onerror=b("error"),b=Cb[g]=b("abort");try{f.send(a.hasContent&&a.data||null)}catch(h){if(b)throw h}},abort:function(){b&&b()}}:void 0}),n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(d,e){b=n(" +{% endhighlight %} + +### Events + +When showing a new tab, the events fire in the following order: + +1. `hide.bs.tab` (on the current active tab) +2. `show.bs.tab` (on the to-be-shown tab) +3. `hidden.bs.tab` (on the previous active tab, the same one as for the `hide.bs.tab` event) +4. `shown.bs.tab` (on the newly-active just-shown tab, the same one as for the `show.bs.tab` event) + +If no tab was already active, then the `hide.bs.tab` and `hidden.bs.tab` events will not be fired. + + + + + Event Type + Description + + + + + show.bs.tab + This event fires on tab show, but before the new tab has been shown. Use event.target and event.relatedTarget to target the active tab and the previous active tab (if available) respectively. + + + shown.bs.tab + This event fires on tab show after a tab has been shown. Use event.target and event.relatedTarget to target the active tab and the previous active tab (if available) respectively. + + + hide.bs.tab + This event fires when a new tab is to be shown (and thus the previous active tab is to be hidden). Use event.target and event.relatedTarget to target the current active tab and the new soon-to-be-active tab, respectively. + + + hidden.bs.tab + This event fires after a new tab is shown (and thus the previous active tab is hidden). Use event.target and event.relatedTarget to target the previous active tab and the new active tab, respectively. + + + + +{% highlight js %} +$('a[data-toggle="tab"]').on('shown.bs.tab', function (e) { + e.target // newly activated tab + e.relatedTarget // previous active tab +}) +{% endhighlight %} diff --git a/docs/components/pagination.md b/docs/components/pagination.md new file mode 100644 index 000000000..4230a6647 --- /dev/null +++ b/docs/components/pagination.md @@ -0,0 +1,179 @@ +--- +layout: docs +title: Pagination +group: components +--- + +Provide pagination links for your site or app with the multi-page pagination component, or the simpler [pager alternative](#pager). + +## Contents + +* Will be replaced with the ToC, excluding the "Contents" header +{:toc} + +## Default pagination + +Simple pagination inspired by Rdio, great for apps and search results. The large block is hard to miss, easily scalable, and provides large click areas. + +{% example html %} + + + + + « + Previous + + + 1 + 2 + 3 + 4 + 5 + + + » + Next + + + + +{% endexample %} + +### Disabled and active states + +Links are customizable for different circumstances. Use `.disabled` for unclickable links and `.active` to indicate the current page. + +{% example html %} + + + + + « + Previous + + + + 1 (current) + + 2 + 3 + 4 + 5 + + + » + Next + + + + +{% endexample %} + +You can optionally swap out active or disabled anchors for ``, or omit the anchor in the case of the prev/next arrows, to remove click functionality while retaining intended styles. + +{% example html %} + + + + + « + Previous + + + 1 (current) + + +{% endexample %} + + +### Sizing + +Fancy larger or smaller pagination? Add `.pagination-lg` or `.pagination-sm` for additional sizes. + +{% example html %} + + + + + « + Previous + + + 1 + 2 + 3 + + + » + Next + + + + +{% endexample %} + +{% example html %} + + + + + « + Previous + + + 1 + 2 + 3 + + + » + Next + + + + +{% endexample %} + +## Pager + +Quick previous and next links for simple pagination implementations with light markup and styles. It's great for simple sites like blogs or magazines. + +### Default example + +By default, the pager centers links. + +{% example html %} + + + Previous + Next + + +{% endexample %} + +### Aligned links + +Alternatively, you can align each link to the sides: + +{% example html %} + + + Older + Newer + + +{% endexample %} + + +### Optional disabled state + +Pager links also use the `.disabled` class. + +{% example html %} + + + Older + Newer + + +{% endexample %} diff --git a/docs/components/popovers.md b/docs/components/popovers.md new file mode 100644 index 000000000..9621bb7d8 --- /dev/null +++ b/docs/components/popovers.md @@ -0,0 +1,349 @@ +--- +layout: docs +title: Popovers +group: components +--- + +Add small overlay content, like those found in iOS, to any element for housing secondary information. + +## Contents + +* Will be replaced with the ToC, excluding the "Contents" header +{:toc} + +## Overview + +Things to know when using the popover plugin: + + +- Popovers rely on the 3rd party library [Tether](http://github.hubspot.com/tether/) for positioning. You must include [tether.min.js](https://github.com/HubSpot/tether/blob/master/dist/js/tether.min.js) before bootstrap.js in order for popovers to work! +- Popovers require the [tooltip plugin]({{ site.baseurl }}/components/tooltips) as a dependency. +- Popovers are opt-in for performance reasons, so **you must initialize them yourself**. +- Zero-length `title` and `content` values will never show a popover. +- Specify `container: 'body'` to avoid rendering problems in more complex components (like our input groups, button groups, etc). +- Triggering popovers on hidden elements will not work. +- Popovers for `.disabled` or `disabled` elements must be triggered on a wrapper element. +- When triggered from hyperlinks that span multiple lines, popovers will be centered. Use `white-space: nowrap;` on your ``s to avoid this behavior. + +Got all that? Great, let's see how they work with some examples. + +## Example: Enable popovers everywhere + +One way to initialize all popovers on a page would be to select them by their `data-toggle` attribute: + +{% highlight js %} +$(function () { + $('[data-toggle="popover"]').popover() +}) +{% endhighlight %} + +## Example: Using the `container` option + +When you have some styles on a parent element that interfere with a popover, you'll want to specify a custom `container` so that the popover's HTML appears within that element instead. + +{% highlight js %} +$(function () { + $('.example-popover').popover({ + container: 'body' + }) +}) +{% endhighlight %} + +## Static popover + +Four options are available: top, right, bottom, and left aligned. + + + + + Popover top + + Sed posuere consectetur est at lobortis. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. + + + + + + Popover right + + Sed posuere consectetur est at lobortis. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. + + + + + + Popover bottom + + + Sed posuere consectetur est at lobortis. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. + + + + + + Popover left + + Sed posuere consectetur est at lobortis. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. + + + + + + +## Live demo + +{% example html %} +Click to toggle popover +{% endexample %} + +### Four directions + + + + + Popover on top + + + Popover on right + + + Popover on bottom + + + Popover on left + + + + +{% highlight html %} + + Popover on top + + + + Popover on right + + + + Popover on bottom + + + + Popover on left + +{% endhighlight %} + +### Dismiss on next click + +Use the `focus` trigger to dismiss popovers on the next click that the user makes. + +{% callout danger %} +#### Specific markup required for dismiss-on-next-click + +For proper cross-browser and cross-platform behavior, you must use the `` tag, _not_ the `` tag, and you also must include a [`tabindex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes#tabindex) attribute. +{% endcallout %} + +{% example html %} +Dismissible popover +{% endexample %} + +{% highlight js %} +$('.popover-dismiss').popover({ + trigger: 'focus' +}) +{% endhighlight %} + + + +## Usage + +Enable popovers via JavaScript: + +{% highlight js %}$('#example').popover(options){% endhighlight %} + +### Options + +Options can be passed via data attributes or JavaScript. For data attributes, append the option name to `data-`, as in `data-animation=""`. + + + + + + Name + Type + Default + Description + + + + + animation + boolean + true + Apply a CSS fade transition to the popover + + + container + string | false + false + + Appends the popover to a specific element. Example: container: 'body'. This option is particularly useful in that it allows you to position the popover in the flow of the document near the triggering element - which will prevent the popover from floating away from the triggering element during a window resize. + + + + content + string | element | function + '' + + Default content value if data-content attribute isn't present. + If a function is given, it will be called with its this reference set to the element that the popover is attached to. + + + + delay + number | object + 0 + + Delay showing and hiding the popover (ms) - does not apply to manual trigger type + If a number is supplied, delay is applied to both hide/show + Object structure is: delay: { "show": 500, "hide": 100 } + + + + html + boolean + false + Insert HTML into the popover. If false, jQuery's text method will be used to insert content into the DOM. Use text if you're worried about XSS attacks. + + + placement + string | function + 'right' + + How to position the popover - top | bottom | left | right | auto.When "auto" is specified, it will dynamically reorient the popover. For example, if placement is "auto left", the popover will display to the left when possible, otherwise it will display right. + When a function is used to determine the placement, it is called with the popover DOM node as its first argument and the triggering element DOM node as its second. The this context is set to the popover instance. + + + + selector + string + false + If a selector is provided, popover objects will be delegated to the specified targets. In practice, this is used to enable dynamic HTML content to have popovers added. See this and an informative example. + + + template + string + '<div class="popover" role="tooltip"><div class="popover-arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>' + + Base HTML to use when creating the popover. + The popover's title will be injected into the .popover-title. + The popover's content will be injected into the .popover-content. + .popover-arrow will become the popover's arrow. + The outermost wrapper element should have the .popover class. + + + + title + string | element | function + '' + + Default title value if title attribute isn't present. + If a function is given, it will be called with its this reference set to the element that the popover is attached to. + + + + trigger + string + 'click' + How popover is triggered - click | hover | focus | manual. You may pass multiple triggers; separate them with a space. `manual` cannot be combined with any other trigger. + + + constraints + Array + 'hover focus' + An array of constraints - passed through to Tether. For more information refer to Tether's constraint docs. + + + offsets + string + '0 0' + Offset of the popover relative to its target. For more information refer to Tether's offset docs. + + + + + +{% callout info %} +#### Data attributes for individual popovers + +Options for individual popovers can alternatively be specified through the use of data attributes, as explained above. +{% endcallout %} + +### Methods + +#### `$().popover(options)` + +Initializes popovers for an element collection. + +#### `.popover('show')` + +Reveals an element's popover. **Returns to the caller before the popover has actually been shown** (i.e. before the `shown.bs.popover` event occurs). This is considered a "manual" triggering of the popover. Popovers whose both title and content are zero-length are never displayed. + +{% highlight js %}$('#element').popover('show'){% endhighlight %} + +#### `.popover('hide')` + +Hides an element's popover. **Returns to the caller before the popover has actually been hidden** (i.e. before the `hidden.bs.popover` event occurs). This is considered a "manual" triggering of the popover. + +{% highlight js %}$('#element').popover('hide'){% endhighlight %} + +#### `.popover('toggle')` + +Toggles an element's popover. **Returns to the caller before the popover has actually been shown or hidden** (i.e. before the `shown.bs.popover` or `hidden.bs.popover` event occurs). This is considered a "manual" triggering of the popover. + +{% highlight js %}$('#element').popover('toggle'){% endhighlight %} + +#### `.popover('dispose')` + +Hides and destroys an element's popover. Popovers that use delegation (which are created using [the `selector` option](#options)) cannot be individually destroyed on descendant trigger elements. + + +{% highlight js %}$('#element').popover('dispose'){% endhighlight %} + +### Events + + + + + + Event Type + Description + + + + + show.bs.popover + This event fires immediately when the show instance method is called. + + + shown.bs.popover + This event is fired when the popover has been made visible to the user (will wait for CSS transitions to complete). + + + hide.bs.popover + This event is fired immediately when the hide instance method has been called. + + + hidden.bs.popover + This event is fired when the popover has finished being hidden from the user (will wait for CSS transitions to complete). + + + + + +{% highlight js %} +$('#myPopover').on('hidden.bs.popover', function () { + // do something… +}) +{% endhighlight %} diff --git a/docs/components/progress.md b/docs/components/progress.md new file mode 100644 index 000000000..e801373cd --- /dev/null +++ b/docs/components/progress.md @@ -0,0 +1,74 @@ +--- +layout: docs +title: Progress +group: components +--- + +Stylize [the HTML5 `` element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/progress) with a few extra classes and some crafty browser-specific CSS. Be sure to read up on the browser support. + +## Contents + +* Will be replaced with the ToC, excluding the "Contents" header +{:toc} + +### Example + +{% example html %} +0% +25% +50% +75% +100% +{% endexample %} + +### IE9 support + +Internet Explorer 9 doesn't support the HTML5 `` element, but we can work around that. + +{% example html %} + + + 25% + + +{% endexample %} + +### Contextual alternatives + +Progress bars use some of the same button and alert classes for consistent styles. + +{% example html %} +25% +50% +75% +100% +{% endexample %} + +### Striped + +Uses a gradient to create a striped effect. + +{% example html %} +10% +25% +50% +75% +100% +{% endexample %} + +### Animated stripes + +The striped gradient can also be animated. Add `.progress-animated` to `.progress` to animate the stripes right to left via CSS3 animations. + +**Animated progress bars do not work in IE9 and Opera 12** as they don't support CSS3 animations. + + + 25% + + Toggle animation + + + +{% highlight html %} +25% +{% endhighlight %} diff --git a/docs/components/scrollspy.md b/docs/components/scrollspy.md new file mode 100644 index 000000000..4ae0fa219 --- /dev/null +++ b/docs/components/scrollspy.md @@ -0,0 +1,162 @@ +--- +layout: docs +title: Scrollspy +group: components +--- + +## Contents + +* Will be replaced with the ToC, excluding the "Contents" header +{:toc} + +## Example in navbar + +The ScrollSpy plugin is for automatically updating nav targets based on scroll position. Scroll the area below the navbar and watch the active class change. The dropdown sub items will be highlighted as well. + + + + Project Name + + @fat + @mdo + + Dropdown + + one + two + + three + + + + + + @fat + Ad leggings keytar, brunch id art party dolor labore. Pitchfork yr enim lo-fi before they sold out qui. Tumblr farm-to-table bicycle rights whatever. Anim keffiyeh carles cardigan. Velit seitan mcsweeney's photo booth 3 wolf moon irure. Cosby sweater lomo jean shorts, williamsburg hoodie minim qui you probably haven't heard of them et cardigan trust fund culpa biodiesel wes anderson aesthetic. Nihil tattooed accusamus, cred irony biodiesel keffiyeh artisan ullamco consequat. + @mdo + Veniam marfa mustache skateboard, adipisicing fugiat velit pitchfork beard. Freegan beard aliqua cupidatat mcsweeney's vero. Cupidatat four loko nisi, ea helvetica nulla carles. Tattooed cosby sweater food truck, mcsweeney's quis non freegan vinyl. Lo-fi wes anderson +1 sartorial. Carles non aesthetic exercitation quis gentrify. Brooklyn adipisicing craft beer vice keytar deserunt. + one + Occaecat commodo aliqua delectus. Fap craft beer deserunt skateboard ea. Lomo bicycle rights adipisicing banh mi, velit ea sunt next level locavore single-origin coffee in magna veniam. High life id vinyl, echo park consequat quis aliquip banh mi pitchfork. Vero VHS est adipisicing. Consectetur nisi DIY minim messenger bag. Cred ex in, sustainable delectus consectetur fanny pack iphone. + two + In incididunt echo park, officia deserunt mcsweeney's proident master cleanse thundercats sapiente veniam. Excepteur VHS elit, proident shoreditch +1 biodiesel laborum craft beer. Single-origin coffee wayfarers irure four loko, cupidatat terry richardson master cleanse. Assumenda you probably haven't heard of them art party fanny pack, tattooed nulla cardigan tempor ad. Proident wolf nesciunt sartorial keffiyeh eu banh mi sustainable. Elit wolf voluptate, lo-fi ea portland before they sold out four loko. Locavore enim nostrud mlkshk brooklyn nesciunt. + three + Ad leggings keytar, brunch id art party dolor labore. Pitchfork yr enim lo-fi before they sold out qui. Tumblr farm-to-table bicycle rights whatever. Anim keffiyeh carles cardigan. Velit seitan mcsweeney's photo booth 3 wolf moon irure. Cosby sweater lomo jean shorts, williamsburg hoodie minim qui you probably haven't heard of them et cardigan trust fund culpa biodiesel wes anderson aesthetic. Nihil tattooed accusamus, cred irony biodiesel keffiyeh artisan ullamco consequat. + Keytar twee blog, culpa messenger bag marfa whatever delectus food truck. Sapiente synth id assumenda. Locavore sed helvetica cliche irony, thundercats you probably haven't heard of them consequat hoodie gluten-free lo-fi fap aliquip. Labore elit placeat before they sold out, terry richardson proident brunch nesciunt quis cosby sweater pariatur keffiyeh ut helvetica artisan. Cardigan craft beer seitan readymade velit. VHS chambray laboris tempor veniam. Anim mollit minim commodo ullamco thundercats. + + + + + +## Usage + +### Requires Bootstrap nav + +Scrollspy currently requires the use of a [Bootstrap nav component]({{ site.baseurl }}/components/navs/) for proper highlighting of active links. + +### Requires relative positioning + +No matter the implementation method, scrollspy requires the use of `position: relative;` on the element you're spying on. In most cases this is the ``. When scrollspying on elements other than the ``, be sure to have a `height` set and `overflow-y: scroll;` applied. + +### Via data attributes + +To easily add scrollspy behavior to your topbar navigation, add `data-spy="scroll"` to the element you want to spy on (most typically this would be the ``). Then add the `data-target` attribute with the ID or class of the parent element of any Bootstrap `.nav` component. + +{% highlight css %} +body { + position: relative; +} +{% endhighlight %} + +{% highlight html %} + + ... + + + ... + + + ... + +{% endhighlight %} + +### Via JavaScript + +After adding `position: relative;` in your CSS, call the scrollspy via JavaScript: + +{% highlight js %} +$('body').scrollspy({ target: '#navbar-example' }) +{% endhighlight %} + +{% callout danger %} +#### Resolvable ID targets required + +Navbar links must have resolvable id targets. For example, a `home` must correspond to something in the DOM like ``. +{% endcallout %} + +{% callout info %} +#### Non-`:visible` target elements ignored + +Target elements that are not [`:visible` according to jQuery](https://api.jquery.com/visible-selector/) will be ignored and their corresponding nav items will never be highlighted. +{% endcallout %} + +### Methods + +#### `.scrollspy('refresh')` + +When using scrollspy in conjunction with adding or removing of elements from the DOM, you'll need to call the refresh method like so: + +{% highlight js %} +$('[data-spy="scroll"]').each(function () { + var $spy = $(this).scrollspy('refresh') +}) +{% endhighlight %} + + +### Options + +Options can be passed via data attributes or JavaScript. For data attributes, append the option name to `data-`, as in `data-offset=""`. + + + + + + Name + Type + Default + Description + + + + + offset + number + 10 + Pixels to offset from top when calculating position of scroll. + + + + + +### Events + + + + + + Event Type + Description + + + + + activate.bs.scrollspy + This event fires whenever a new item becomes activated by the scrollspy. + + + + +{% highlight js %} +$('#myScrollspy').on('activate.bs.scrollspy', function () { + // do something… +}) +{% endhighlight %} diff --git a/docs/components/tooltips.md b/docs/components/tooltips.md new file mode 100644 index 000000000..bba918d9d --- /dev/null +++ b/docs/components/tooltips.md @@ -0,0 +1,306 @@ +--- +layout: docs +title: Tooltips +group: components +--- + +Inspired by the excellent Tipsy jQuery plugin written by Jason Frame. Tooltips are an updated version, which don't rely on images, use CSS3 for animations, and data-attributes for local title storage. + +## Contents + +* Will be replaced with the ToC, excluding the "Contents" header +{:toc} + +## Overview + +Things to know when using the tooltip plugin: + +- Tooltips rely on the 3rd party library [Tether](http://github.hubspot.com/tether/) for positioning. You must include [tether.min.js](https://github.com/HubSpot/tether/blob/master/dist/js/tether.min.js) before bootstrap.js in order for tooltips to work! +- Tooltips are opt-in for performance reasons, so **you must initialize them yourself**. +- Tooltips with zero-length titles are never displayed. +- Specify `container: 'body'` to avoid rendering problems in more complex components (like our input groups, button groups, etc). +- Triggering tooltips on hidden elements will not work. +- Tooltips for `.disabled` or `disabled` elements must be triggered on a wrapper element. +- When triggered from hyperlinks that span multiple lines, tooltips will be centered. Use `white-space: nowrap;` on your ``s to avoid this behavior. + +Got all that? Great, let's see how they work with some examples. + +## Example: Enable tooltips everywhere + +One way to initialize all tooltips on a page would be to select them by their `data-toggle` attribute: + +{% highlight js %} +$(function () { + $('[data-toggle="tooltip"]').tooltip() +}) +{% endhighlight %} + +## Examples + +Hover over the links below to see tooltips: + + + Tight pants next level keffiyeh you probably haven't heard of them. Photo booth beard raw denim letterpress vegan messenger bag stumptown. Farm-to-table seitan, mcsweeney's fixie sustainable quinoa 8-bit american apparel have a terry richardson vinyl chambray. Beard stumptown, cardigans banh mi lomo thundercats. Tofu biodiesel williamsburg marfa, four loko mcsweeney's cleanse vegan chambray. A really ironic artisan whatever keytar, scenester farm-to-table banksy Austin twitter handle freegan cred raw denim single-origin coffee viral. + + + +### Static demo + +Four options are available: top, right, bottom, and left aligned. + + + + + + Tooltip on the top + + + + + + Tooltip on the right + + + + + + Tooltip on the bottom + + + + + + Tooltip on the left + + + + +### Interactive demo + +Hover over the buttons below to see their tooltips. + + + + Tooltip on top + Tooltip on right + Tooltip on bottom + Tooltip on left + + + +{% highlight html %} + + Tooltip on top + + + Tooltip on right + + + Tooltip on bottom + + + Tooltip on left + +{% endhighlight %} + +## Usage + +The tooltip plugin generates content and markup on demand, and by default places tooltips after their trigger element. + +Trigger the tooltip via JavaScript: + +{% highlight js %} +$('#example').tooltip(options) +{% endhighlight %} + +### Markup + +The required markup for a tooltip is only a `data` attribute and `title` on the HTML element you wish to have a tooltip. The generated markup of a tooltip is rather simple, though it does require a position (by default, set to `top` by the plugin). + +{% highlight html %} + +Hover over me + + + + + + Some tooltip text! + + +{% endhighlight %} + +### Options + +Options can be passed via data attributes or JavaScript. For data attributes, append the option name to `data-`, as in `data-animation=""`. + + + + + + Name + Type + Default + Description + + + + + animation + boolean + true + Apply a CSS fade transition to the tooltip + + + container + string | false + false + + Appends the tooltip to a specific element. Example: container: 'body'. This option is particularly useful in that it allows you to position the tooltip in the flow of the document near the triggering element - which will prevent the tooltip from floating away from the triggering element during a window resize. + + + + delay + number | object + 0 + + Delay showing and hiding the tooltip (ms) - does not apply to manual trigger type + If a number is supplied, delay is applied to both hide/show + Object structure is: delay: { "show": 500, "hide": 100 } + + + + html + boolean + false + Insert HTML into the tooltip. If false, jQuery's text method will be used to insert content into the DOM. Use text if you're worried about XSS attacks. + + + placement + string | function + 'top' + + How to position the tooltip - top | bottom | left | right | auto.When "auto" is specified, it will dynamically reorient the tooltip. For example, if placement is "auto left", the tooltip will display to the left when possible, otherwise it will display right. + When a function is used to determine the placement, it is called with the tooltip DOM node as its first argument and the triggering element DOM node as its second. The this context is set to the tooltip instance. + + + + selector + string + false + If a selector is provided, popover objects will be delegated to the specified targets. In practice, this is used to enable dynamic HTML content to have popovers added. See this and an informative example. + + + template + string + '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>' + + Base HTML to use when creating the tooltip. + The tooltip's title will be injected into the .tooltip-inner. + .tooltip-arrow will become the tooltip's arrow. + The outermost wrapper element should have the .tooltip class. + + + + title + string | element | function + '' + + Default title value if title attribute isn't present. + If a function is given, it will be called with its this reference set to the element that the tooltip is attached to. + + + + trigger + string + 'hover focus' + How tooltip is triggered - click | hover | focus | manual. You may pass multiple triggers; separate them with a space. `manual` cannot be combined with any other trigger. + + + constraints + Array + [] + An array of constraints - passed through to Tether. For more information refer to Tether's constraint docs. + + + offsets + string + '0 0' + Offset of the popover relative to its target. For more information refer to Tether's offset docs. + + + + + +{% callout info %} +#### Data attributes for individual tooltips + +Options for individual tooltips can alternatively be specified through the use of data attributes, as explained above. +{% endcallout %} + +### Methods + +#### `$().tooltip(options)` + +Attaches a tooltip handler to an element collection. + +#### `.tooltip('show')` + +Reveals an element's tooltip. **Returns to the caller before the tooltip has actually been shown** (i.e. before the `shown.bs.tooltip` event occurs). This is considered a "manual" triggering of the tooltip. Tooltips with zero-length titles are never displayed. + +{% highlight js %}$('#element').tooltip('show'){% endhighlight %} + +#### `.tooltip('hide')` + +Hides an element's tooltip. **Returns to the caller before the tooltip has actually been hidden** (i.e. before the `hidden.bs.tooltip` event occurs). This is considered a "manual" triggering of the tooltip. + +{% highlight js %}$('#element').tooltip('hide'){% endhighlight %} + +#### `.tooltip('toggle')` + +Toggles an element's tooltip. **Returns to the caller before the tooltip has actually been shown or hidden** (i.e. before the `shown.bs.tooltip` or `hidden.bs.tooltip` event occurs). This is considered a "manual" triggering of the tooltip. + +{% highlight js %}$('#element').tooltip('toggle'){% endhighlight %} + +#### `.tooltip('dispose')` + +Hides and destroys an element's tooltip. Tooltips that use delegation (which are created using [the `selector` option](#options)) cannot be individually destroyed on descendant trigger elements. + +{% highlight js %}$('#element').tooltip('dispose'){% endhighlight %} + +### Events + + + + + + Event Type + Description + + + + + show.bs.tooltip + This event fires immediately when the show instance method is called. + + + shown.bs.tooltip + This event is fired when the tooltip has been made visible to the user (will wait for CSS transitions to complete). + + + hide.bs.tooltip + This event is fired immediately when the hide instance method has been called. + + + hidden.bs.tooltip + This event is fired when the tooltip has finished being hidden from the user (will wait for CSS transitions to complete). + + + + + +{% highlight js %} +$('#myTooltip').on('hidden.bs.tooltip', function () { + // do something… +}) +{% endhighlight %} diff --git a/docs/components/utilities.md b/docs/components/utilities.md new file mode 100644 index 000000000..4d8ea4b28 --- /dev/null +++ b/docs/components/utilities.md @@ -0,0 +1,326 @@ +--- +layout: docs +title: Utility classes +group: components +--- + +Bootstrap includes dozens of utilities—classes with a single purpose. They're designed to reduce the frequency of highly repetitive declarations in your CSS while allowing for quick and easy development. + +## Contents + +* Will be replaced with the ToC, excluding the "Contents" header +{:toc} + +## Spacing + +Assign `margin` or `padding` to an element or a subset of its sides with shorthand classes. Includes support for individual properties, all properties, and vertical and horizontal properties. All classes are multiples on the global default value, `1rem`. + +The classes are named using the format: `{property}-{sides}-{size}` + +Where *property* is one of: +* `m` - for classes that set `margin` +* `p` - for classes that set `padding` + +Where *sides* is one of: +* `t` - for classes that set `margin-top` or `padding-top` +* `b` - for classes that set `margin-bottom` or `padding-bottom` +* `l` - for classes that set `margin-left` or `padding-left` +* `r` - for classes that set `margin-right` or `padding-right` +* `x` - for classes that set both `*-left` and `*-right` +* `y` - for classes that set both `*-top` and `*-bottom` +* `a` - for classes that set a `margin` or `padding` on all 4 sides of the element + +Where *size* is one of: +* `0` - for classes that eliminate the `margin` or `padding` by setting it to `0` +* `1` - (by default) for classes that set the `margin` or `padding` to `$spacer-x` or `$spacer-y` +* `2` - (by default) for classes that set the `margin` or `padding` to `$spacer-x * 1.5` or `$spacer-y * 1.5` +* `3` - (by default) for classes that set the `margin` or `padding` to `$spacer-x * 3` or `$spacer-y * 3` + +Here are some representative examples of these classes: +```scss +.m-t-0 { + margin-top: 0 !important; +} + +.m-l-1 { + margin-left: $spacer-x !important; +} + +.p-x-2 { + padding-left: ($spacer-x * 1.5) !important; + padding-right: ($spacer-x * 1.5) !important; +} + +.p-a-3 { + padding: ($spacer-y * 3) ($spacer-x * 3) !important; +} +``` + +Additionally, Bootstrap also includes an `.m-x-auto` class which sets the horizontal margins to `auto`. + + +## Text alignment + +Easily realign text to components with text alignment classes. + +{% example html %} +Justified text. +No wrap text. +{% endexample %} + +For left, right, and center alignment, responsive classes are available that use the same viewport width breakpoints as the grid system. + +{% example html %} +Left aligned text on all viewport sizes. +Center aligned text on all viewport sizes. +Right aligned text on all viewport sizes. + +Left aligned text on viewports sized SM (small) or wider. +Left aligned text on viewports sized MD (medium) or wider. +Left aligned text on viewports sized LG (large) or wider. +Left aligned text on viewports sized XL (extra-large) or wider. +{% endexample %} + +## Text transform + +Transform text in components with text capitalization classes. + +{% example html %} +Lowercased text. +Uppercased text. +CapiTaliZed text. +{% endexample %} + +## Font weight and italics + +Quickly change the weight (boldness) of text or italicize text. + +{% example html %} +Bold text. +Normal weight text. +Italicized text. +{% endexample %} + +## Contextual colors and backgrounds + +Convey meaning through color with a handful of emphasis utility classes. These may also be applied to links and will darken on hover just like our default link styles. + +{% example html %} +Fusce dapibus, tellus ac cursus commodo, tortor mauris nibh. +Nullam id dolor id nibh ultricies vehicula ut id elit. +Duis mollis, est non commodo luctus, nisi erat porttitor ligula. +Maecenas sed diam eget risus varius blandit sit amet non magna. +Etiam porta sem malesuada magna mollis euismod. +Donec ullamcorper nulla non metus auctor fringilla. +{% endexample %} + +Contextual text classes also work well on anchors with the provided hover and focus states. + +{% example html %} +Muted link +Primary link +Success link +Info link +Warning link +Danger link +{% endexample %} + +Similar to the contextual text color classes, easily set the background of an element to any contextual class. Anchor components will darken on hover, just like the text classes. + +{% example html %} +Nullam id dolor id nibh ultricies vehicula ut id elit. +Duis mollis, est non commodo luctus, nisi erat porttitor ligula. +Maecenas sed diam eget risus varius blandit sit amet non magna. +Etiam porta sem malesuada magna mollis euismod. +Donec ullamcorper nulla non metus auctor fringilla. +Cras mattis consectetur purus sit amet fermentum. +{% endexample %} + +{% callout info %} +#### Dealing with specificity + +Sometimes contextual classes cannot be applied due to the specificity of another selector. In some cases, a sufficient workaround is to wrap your element's content in a `` with the class. +{% endcallout %} + +{% callout warning %} +#### Conveying meaning to assistive technologies + +Ensure that any meaning conveyed through color is also conveyed in a format that is not purely presentational. +{% endcallout %} + +## Close icon + +Use a generic close icon for dismissing content like modals and alerts. **Be sure to include text for screen readers**, as we've done with `aria-label`. + +{% example html %} + + × + +{% endexample %} + +## Responsive floats + +These utility classes float an element to the left or right, or disable floating, based on the current viewport size using the [CSS `float` property](https://developer.mozilla.org/en-US/docs/Web/CSS/float). `!important` is included to avoid specificity issues. These use the same viewport width breakpoints as the grid system. + +Two similar non-responsive mixins (`pull-left` and `pull-right`) are also available. + +{% example html %} +Float left on all viewport sizes +Float right on all viewport sizes +Don't float on all viewport sizes + +Float left on viewports sized SM (small) or wider +Float left on viewports sized MD (medium) or wider +Float left on viewports sized LG (large) or wider +Float left on viewports sized XL (extra-large) or wider +{% endexample %} + +{% highlight scss %} +// Related simple non-responsive mixins +.element { + @include pull-left; +} +.another-element { + @include pull-right; +} +{% endhighlight %} + +## Center content + +Set an element to `display: block;` and center via `margin`. Available as a mixin and class. + +{% example html %} +Centered block +{% endexample %} + +{% highlight scss %} +// Class +.center-block { + display: block; + margin-left: auto; + margin-right: auto; +} + +// Usage as a mixin +.element { + @include center-block; +} +{% endhighlight %} + +Easily clear `float`s by adding `.clearfix` **to the parent element**. Utilizes [the micro clearfix](http://nicolasgallagher.com/micro-clearfix-hack/) as popularized by Nicolas Gallagher. Can also be used as a mixin. + +{% highlight html %} +... +{% endhighlight %} + +{% highlight scss %} +// Mixin itself +.clearfix() { + &:before, + &:after { + content: " "; + display: table; + } + &:after { + clear: both; + } +} + +// Usage as a mixin +.element { + @include clearfix; +} +{% endhighlight %} + +## Invisible content + +The `.invisible` class can be used to toggle only the visibility of an element, meaning its `display` is not modified and the element can still affect the flow of the document. + +{% highlight html %} +... +{% endhighlight %} + +{% highlight scss %} +// Class +.invisible { + visibility: hidden; +} + +// Usage as a mixin +.element { + .invisible(); +} +{% endhighlight %} + +## Screen readers and keyboard users + +Hide an element to all devices **except screen readers** with `.sr-only`. Combine `.sr-only` with `.sr-only-focusable` to show the element again when it's focused (e.g. by a keyboard-only user). Can also be used as mixins. + +{% comment %} +Necessary for following [accessibility best practices](../getting-started/#accessibility). +{% endcomment %} + +{% highlight html %} +Skip to main content +{% endhighlight %} + +{% highlight scss %} +// Usage as a mixin +.skip-navigation { + @include sr-only; + @include sr-only-focusable; +} +{% endhighlight %} + +## Image replacement + +Utilize the `.text-hide` class or mixin to help replace an element's text content with a background image. + +{% highlight html %} +Custom heading +{% endhighlight %} + +{% highlight scss %} +// Usage as a mixin +.heading { + @include text-hide; +} +{% endhighlight %} + +## Responsive embeds + +Allow browsers to determine video or slideshow dimensions based on the width of their containing block by creating an intrinsic ratio that will properly scale on any device. + +Rules are directly applied to ``, ``, ``, and `` elements; optionally use an explicit descendant class `.embed-responsive-item` when you want to match the styling for other attributes. + +**Pro-Tip!** You don't need to include `frameborder="0"` in your ``s as we override that for you. + +{% example html %} + + + +{% endexample %} + +Aspect ratios can be customized with modifier classes. + +{% highlight html %} + + + + + + + + + + + + + + + + + + + +{% endhighlight %} diff --git a/docs/content/code.md b/docs/content/code.md new file mode 100644 index 000000000..4ce1e7fa3 --- /dev/null +++ b/docs/content/code.md @@ -0,0 +1,53 @@ +--- +layout: docs +title: Code +group: content +--- + +Styles for inline code snippets and longer, multiline blocks of code. + +## Contents + +* Will be replaced with the ToC, excluding the "Contents" header +{:toc} + +## Inline code + +Wrap inline snippets of code with `code`. Be sure to escape HTML angle brackets. + +{% example html %} +For example, <section> should be wrapped as inline. +{% endexample %} + +## Preformatted text + +Or, code blocks. Use ``s for multiple lines of code. Once again, be sure to escape any angle brackets in the code for proper rendering. You may optionally add the `.pre-scrollable` class, which will set a max-height of 350px and provide a y-axis scrollbar. + +{% example html %} +<p>Sample text here...</p> +{% endexample %} + +## Variables + +For indicating variables use the `` tag. + +{% example html %} +y = mx + b +{% endexample %} + +## User input + +Use the `` to indicate input that is typically entered via keyboard. + +{% example html %} +To switch directories, type cd followed by the name of the directory. +To edit settings, press ctrl + , +{% endexample %} + +## Sample output + +For indicating blocks sample output from a program use the `` tag. + +{% example html %} +This text is meant to be treated as sample output from a computer program. +{% endexample %} diff --git a/docs/content/figures.md b/docs/content/figures.md new file mode 100644 index 000000000..d57270518 --- /dev/null +++ b/docs/content/figures.md @@ -0,0 +1,25 @@ +--- +layout: docs +title: Figures +group: content +--- + +Anytime you need to display a piece of content—like an image—with an optional caption, consider using a ``. + +Use the included `.figure` , `.figure-img` and `.figure-caption` classes to provide some baseline styles for the HTML5 `` and `` elements. Images in figures have no explicit size, so be sure to add the `.img-fluid` class to your `` to make it responsive. + +{% example html %} + + + A caption for the above image. + +{% endexample %} + +Aligning the figure's caption is easy with our [text utilities]({{ site.baseurl }}/components/utilities/#text-alignment). + +{% example html %} + + + A caption for the above image. + +{% endexample %} diff --git a/docs/content/images.md b/docs/content/images.md new file mode 100644 index 000000000..38a855a09 --- /dev/null +++ b/docs/content/images.md @@ -0,0 +1,80 @@ +--- +layout: docs +title: Images +group: content +--- + +Opt your images into responsive behavior (so they never become larger than their parent elements) and add lightweight styles to them—all via classes. + +## Contents + +* Will be replaced with the ToC, excluding the "Contents" header +{:toc} + +## Responsive images + +Images in Bootstrap are made responsive with `.img-fluid`. `max-width: 100%;` and `height: auto;` are applied to the image so that it scales with the parent element. + + + + + +{% highlight html %} + +{% endhighlight %} + +{% callout warning %} +#### SVG images and IE 9-10 + +In Internet Explorer 9-10, SVG images with `.img-fluid` are disproportionately sized. To fix this, add `width: 100% \9;` where necessary. This fix improperly sizes other image formats, so Bootstrap doesn't apply it automatically. +{% endcallout %} + +## Image shapes + +Add classes to an `` element to easily style images in any project. + + + + + + + +{% highlight html %} + + + +{% endhighlight %} + +## Aligning images + +Align images with the [helper float classes]({{ site.baseurl }}/components/utilities/#floats) or [text alignment classes]({{ site.baseurl }}/components/utilities/#text-alignment). A simple centering class can also be used for `block` level images. + + + + + + +{% highlight html %} + + +{% endhighlight %} + + + + + +{% highlight html %} + +{% endhighlight %} + + + + + + + +{% highlight html %} + + + +{% endhighlight %} diff --git a/docs/content/reboot.md b/docs/content/reboot.md new file mode 100644 index 000000000..9631a86b6 --- /dev/null +++ b/docs/content/reboot.md @@ -0,0 +1,317 @@ +--- +layout: docs +title: Reboot +group: content +redirect_from: "/content/" +--- + +Part of Bootstrap's job is to provide an elegant, consistent, and simple baseline to build upon. We use Reboot, a collection of element-specific CSS changes in a single file, to kickstart that. + +Reboot builds upon Normalize, providing many HTML elements with somewhat opinionated styles using only element selectors. Additional styling is done only with classes. For example, we reboot some `` styles for a simpler baseline and later provide `.table`, `.table-bordered`, and more. + +## Contents + +* Will be replaced with the ToC, excluding the "Contents" header +{:toc} + +## Approach + +Here are our guidelines and reasons for choosing what to override in Reboot: + +- Update some browser default values to use `rem`s instead of `em`s for scalable component spacing. +- Avoid `margin-top`. Vertical margins can collapse, yielding unexpected results. More importantly though, a single direction of `margin` is a simpler mental model. +- For easier scaling across device sizes, block elements should use `rem`s for `margin`s. +- Keep declarations of `font`-related properties to a minimum, using `inherit` whenever possible. + +## Page defaults + +The `` and `` elements are updated to provide better page-wide defaults. More specifically: + +- The `box-sizing` is globally set on every element—including `*:before` and `*:after`, to `border-box`. This ensures that the declared width of element is never exceeded due to padding or border. +- A base `font-size: 16px` is declared on the `` and `font-size: 1rem` on the `` for easy responsive type-scaling via media queryies. +- The `` also sets a global `font-family` and `line-height`. This is inherited later by some form elements to prevent font inconsistencies. +- For safety, the `` has a declared `background-color`, defaulting to `#fff`. + +## Headings and paragraphs + +All heading elements—e.g., ``—and `` are reset to have their `margin-top` removed. Headings have `margin-bottom: .5rem` added and paragraphs `margin-bottom: 1rem` for easy spacing. + + +{% markdown %} +# h1 heading +Curabitur blandit tempus porttitor. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. + +## h2 heading +Curabitur blandit tempus porttitor. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. + +### h3 heading +Curabitur blandit tempus porttitor. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. + +#### h4 heading +Curabitur blandit tempus porttitor. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. + +##### h5 heading +Curabitur blandit tempus porttitor. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. + +###### h6 heading +Curabitur blandit tempus porttitor. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. +{% endmarkdown %} + + +## Lists + +All lists—``, ``, and ``—have their `margin-top` removed and a `margin-bottom: 1rem`. Nested lists have no `margin-bottom`. + + +{% markdown %} +* Lorem ipsum dolor sit amet +* Consectetur adipiscing elit +* Integer molestie lorem at massa +* Facilisis in pretium nisl aliquet +* Nulla volutpat aliquam velit + * Phasellus iaculis neque + * Purus sodales ultricies + * Vestibulum laoreet porttitor sem + * Ac tristique libero volutpat at +* Faucibus porta lacus fringilla vel +* Aenean sit amet erat nunc +* Eget porttitor lorem + +1. Lorem ipsum dolor sit amet +2. Consectetur adipiscing elit +3. Integer molestie lorem at massa +4. Facilisis in pretium nisl aliquet +5. Nulla volutpat aliquam velit +6. Faucibus porta lacus fringilla vel +7. Aenean sit amet erat nunc +8. Eget porttitor lorem +{% endmarkdown %} + + +For simpler styling, clear hierarchy, and better spacing, description lists have updated `margin`s. ``s reset `margin-left` to `0` and add `margin-bottom: .5rem`. ``s are **bolded**. + + +{% markdown %} + + Description lists + A description list is perfect for defining terms. + Euismod + Vestibulum id ligula porta felis euismod semper eget lacinia odio sem. + Donec id elit non mi porta gravida at eget metus. + Malesuada porta + Etiam porta sem malesuada magna mollis euismod. + +{% endmarkdown %} + + +## Preformatted text + +The `` element is reset to remove its `margin-top` and use `rem` units for its `margin-bottom`. + + +{% markdown %} + +.example-element { + margin-bottom: 1rem; +} + +{% endmarkdown %} + + +## Tables + +Tables are slightly adjusted to style ``s and ensure consistent `text-align` throughout. Additional changes for borders, padding, and more come with [the `.table` class]({{ site.baseurl }}/content/tables/). + + + + + This is an example table, and this is its caption to describe the contents. + + + + Table heading + Table heading + Table heading + Table heading + + + + + Table cell + Table cell + Table cell + Table cell + + + Table cell + Table cell + Table cell + Table cell + + + Table cell + Table cell + Table cell + Table cell + + + + + +## Forms + +Various form elements have been rebooted for simpler base styles. Here are some of the most notable changes: + +- ``s have no borders, padding, or margin so they can be easily used as wrappers for individual inputs or groups of inputs. +- ``s, like fieldsets, have also been restyled to be displayed as a heading of sorts. +- ``s are set to `display: inline-block` to allow `margin` to be applied. +- ``s, ``s, ``s, and ``s are mostly addressed by Normalize, but Reboot removes their `margin` and sets `line-height: inherit`, too. +- ``s are modified to only be resizable vertically as horizontal resizing often "breaks" page layout. + +These changes, and more, are demonstrated below. + + + + Example legend + + + Example input + + + + + Example select + + Choose... + + Option 1 + Option 2 + Option 3 + + + Option 4 + Option 5 + Option 6 + + + + + + + + Check this checkbox + + + + + + + Option one is this and that + + + + Option two is something else that's also super long to demonstrate the wrapping of these fancy form controls. + + + + Option three is disabled + + + + + Example textarea + + + + + Example temporal + + + + + Example output + 100 + + + + Button submit + + + + + + Button submit + + + + + + +## Misc elements + +### Address + +The `` element is updated to reset the browser default `font-style` from `italic` to `normal`. `line-height` is also now inherited, and `margin-bottom: 1rem` has been added. ``s are for presenting contact information for the nearest ancestor (or an entire body of work). Preserve formatting by ending lines with ``. + + + + Twitter, Inc. + 1355 Market St, Suite 900 + San Francisco, CA 94103 + P: (123) 456-7890 + + + + Full Name + first.last@example.com + + + +### Blockquote + +The default `margin` on blockquotes is `1em 40px`, so we reset that to `0 0 1rem` for something more consistent with other elements. + + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante. + + + + +### Inline elements + +The `` element receives basic styling to make it stand out amongst paragraph text. + + + Nulla attr vitae elit libero, a pharetra augue. + + +## HTML5 `[hidden]` attribute + +HTML5 adds [a new global attribute named `[hidden]`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/hidden), which is styled as `display: none` by default. Borrowing an idea from [PureCSS](http://purecss.io), we improve upon this default by making `[hidden] { display: none !important; }` to help prevent its `display` from getting accidentally overridden. While `[hidden]` isn't natively supported by IE9-10, the explicit declaration in our CSS gets around that problem. + +{% highlight html %} + +{% endhighlight %} + +{% callout warning %} +#### jQuery incompatibility + +`[hidden]` is not compatible with jQuery's `$(...).hide()` and `$(...).show()` methods. This could potentially change in jQuery 3, but we're not holding our breath. Therefore, we don't currently especially endorse `[hidden]` over other techniques for managing the `display` of elements. +{% endcallout %} + +To merely toggle the visibility of an element, meaning its `display` is not modified and the element can still affect the flow of the document, use [the `.invisible` class]({{ site.baseurl }}/components/utilities/#invisible-content) instead. + +## Click delay optimization for touch + +Traditionally, browsers on touchscreen devices have a delay of approximately 300ms between the end of a "tap" – the moment when a finger/stylus is lifted from screen – and the [`click` event](https://developer.mozilla.org/en-US/docs/Web/Events/click) being fired. This delay is necessary for these browsers to correctly handle "double-tap to zoom" gestures without prematurely triggering actions or links after the first "tap", but it can make your site feel slightly sluggish and unresponsive. + +Most mobile browsers automatically optimize away this 300ms delay for sites that use the `width=device-width` property as part of their [responsive meta tag]({{ site.baseurl }}/getting-started/introduction/#responsive-meta-tag) (as well as for sites that disable zooming, for instance with `user-scalable=no`, though this practice is strongly discouraged for accessibility and usability reasons). The biggest exceptions here are currently iOS Safari (and any other iOS WebView-based browser) – though this is likely to change in iOS 10, see [WebKit bug #150604](https://bugs.webkit.org/show_bug.cgi?id=150604) – and IE11 on Windows Phone 8.1. + +On touch-enabled laptop/desktop devices, IE11 and Microsoft Edge are currently the only browsers with "double-tap to zoom" functionality. As the [responsive meta tag]({{ site.baseurl }}/getting-started/introduction/#responsive-meta-tag) is ignored by all desktop browsers, using `width=device-width` will have no effect on the 300ms delay here. + +To address this problem in IE11 and Microsoft Edge on desktop, as well as IE11 on Windows Phone 8.1, Bootstrap explicitly uses the [`touch-action:manipulation` CSS property](https://developer.mozilla.org/en-US/docs/Web/CSS/touch-action) on all interactive elements (such as buttons and links). This property essentially disables double-tap functionality on those elements, eliminating the 300ms delay. + +In the case of iOS, the currently suggested approach is to use additional scripts such as [FastClick](https://github.com/ftlabs/fastclick) to explicitly work around the delay. + +For further details, see the compatibility table for [suppressing 300ms delay for touchscreen interactions](http://patrickhlauke.github.io/touch/tests/results/#suppressing-300ms-delay). diff --git a/docs/content/tables.md b/docs/content/tables.md new file mode 100644 index 000000000..80bbbf854 --- /dev/null +++ b/docs/content/tables.md @@ -0,0 +1,611 @@ +--- +layout: docs +title: Tables +group: content +--- + +Due to the widespread use of tables across third-party widgets like calendars and date pickers, we've designed our tables to be **opt-in**. Just add the base class `.table` to any ``. + +## Contents + +* Will be replaced with the ToC, excluding the "Contents" header +{:toc} + +## Basic example + +{% example html %} + + + + # + First Name + Last Name + Username + + + + + 1 + Mark + Otto + @mdo + + + 2 + Jacob + Thornton + @fat + + + 3 + Larry + the Bird + @twitter + + + +{% endexample %} + +## Inverse table + +{% example html %} + + + + # + First Name + Last Name + Username + + + + + 1 + Mark + Otto + @mdo + + + 2 + Jacob + Thornton + @fat + + + 3 + Larry + the Bird + @twitter + + + +{% endexample %} + +## Table head options + +Use one of two modifier classes to make ``s appear light or dark gray. + +{% example html %} + + + + # + First Name + Last Name + Username + + + + + 1 + Mark + Otto + @mdo + + + 2 + Jacob + Thornton + @fat + + + 3 + Larry + the Bird + @twitter + + + + + + + + # + First Name + Last Name + Username + + + + + 1 + Mark + Otto + @mdo + + + 2 + Jacob + Thornton + @fat + + + 3 + Larry + the Bird + @twitter + + + +{% endexample %} + +## Striped rows + +Use `.table-striped` to add zebra-striping to any table row within the ``. + +{% example html %} + + + + # + First Name + Last Name + Username + + + + + 1 + Mark + Otto + @mdo + + + 2 + Jacob + Thornton + @fat + + + 3 + Larry + the Bird + @twitter + + + +{% endexample %} + +## Bordered table + +Add `.table-bordered` for borders on all sides of the table and cells. + +{% example html %} + + + + # + First Name + Last Name + Username + + + + + 1 + Mark + Otto + @mdo + + + 2 + Mark + Otto + @TwBootstrap + + + 3 + Jacob + Thornton + @fat + + + 4 + Larry the Bird + @twitter + + + +{% endexample %} + +## Hoverable rows + +Add `.table-hover` to enable a hover state on table rows within a ``. + +{% example html %} + + + + # + First Name + Last Name + Username + + + + + 1 + Mark + Otto + @mdo + + + 2 + Jacob + Thornton + @fat + + + 3 + Larry the Bird + @twitter + + + +{% endexample %} + +## Small table + +Add `.table-sm` to make tables more compact by cutting cell padding in half. + +{% example html %} + + + + # + First Name + Last Name + Username + + + + + 1 + Mark + Otto + @mdo + + + 2 + Jacob + Thornton + @fat + + + 3 + Larry the Bird + @twitter + + + +{% endexample %} + +## Contextual classes + +Use contextual classes to color table rows or individual cells. + + + + + + + + + + Class + Description + + + + + + .table-active + + Applies the hover color to a particular row or cell + + + + .table-success + + Indicates a successful or positive action + + + + .table-info + + Indicates a neutral informative change or action + + + + .table-warning + + Indicates a warning that might need attention + + + + .table-danger + + Indicates a dangerous or potentially negative action + + + + + + + + + + # + Column heading + Column heading + Column heading + + + + + 1 + Column content + Column content + Column content + + + 2 + Column content + Column content + Column content + + + 3 + Column content + Column content + Column content + + + 4 + Column content + Column content + Column content + + + 5 + Column content + Column content + Column content + + + 6 + Column content + Column content + Column content + + + 7 + Column content + Column content + Column content + + + 8 + Column content + Column content + Column content + + + 9 + Column content + Column content + Column content + + + + + +{% highlight html %} + +... +... +... +... +... + + + + ... + ... + ... + ... + ... + +{% endhighlight %} + +## Responsive tables + +Create responsive tables by wrapping any `.table` in `.table-responsive` to make them scroll horizontally on small devices (under 768px). When viewing on anything larger than 768px wide, you will not see any difference in these tables. + +{% callout warning %} +#### Vertical clipping/truncation + +Responsive tables make use of `overflow-y: hidden`, which clips off any content that goes beyond the bottom or top edges of the table. In particular, this can clip off dropdown menus and other third-party widgets. +{% endcallout %} + +{% callout warning %} +#### Firefox and fieldsets + +Firefox has some awkward fieldset styling involving `width` that interferes with the responsive table. This cannot be overridden without a Firefox-specific hack that we **don't** provide in Bootstrap: + +{% highlight css %} +@-moz-document url-prefix() { + fieldset { display: table-cell; } +} +{% endhighlight %} + +For more information, read [this Stack Overflow answer](https://stackoverflow.com/questions/17408815/fieldset-resizes-wrong-appears-to-have-unremovable-min-width-min-content/17863685#17863685). +{% endcallout %} + + + + + + + # + Table heading + Table heading + Table heading + Table heading + Table heading + Table heading + + + + + 1 + Table cell + Table cell + Table cell + Table cell + Table cell + Table cell + + + 2 + Table cell + Table cell + Table cell + Table cell + Table cell + Table cell + + + 3 + Table cell + Table cell + Table cell + Table cell + Table cell + Table cell + + + + + + + + + + # + Table heading + Table heading + Table heading + Table heading + Table heading + Table heading + + + + + 1 + Table cell + Table cell + Table cell + Table cell + Table cell + Table cell + + + 2 + Table cell + Table cell + Table cell + Table cell + Table cell + Table cell + + + 3 + Table cell + Table cell + Table cell + Table cell + Table cell + Table cell + + + + + + +{% highlight html %} + + + ... + + +{% endhighlight %} + + +### Reflow + +{% example html %} + + + + # + Table heading + Table heading + Table heading + Table heading + Table heading + Table heading + + + + + 1 + Table cell + Table cell + Table cell + Table cell + Table cell + Table cell + + + 2 + Table cell + Table cell + Table cell + Table cell + Table cell + Table cell + + + 3 + Table cell + Table cell + Table cell + Table cell + Table cell + Table cell + + + +{% endexample %} diff --git a/docs/content/typography.md b/docs/content/typography.md new file mode 100644 index 000000000..651e2c49c --- /dev/null +++ b/docs/content/typography.md @@ -0,0 +1,267 @@ +--- +layout: docs +title: Typography +group: content +--- + +Bootstrap includes simple and easily customized typography for headings, body text, lists, and more. For even more control, check out the [textual utility classes]({{ site.baseurl }}/components/utilities/). + +## Contents + +* Will be replaced with the ToC, excluding the "Contents" header +{:toc} + +## Global settings + +Bootstrap sets basic global display, typography, and link styles. Specifically, we: + +- Use `$body-bg` to set a `background-color` on the `` (`#fff` by default) +- Use the `$font-family-base`, `$font-size-base`, and `$line-height-base` attributes as our typographic base +- Set the global link color via `$link-color` and apply link underlines only on `:hover` + +These styles can be found within `_reboot.scss`, and the global variables are defined in `_variables.scss`. + + +## Headings + +All HTML headings, `` through ``, are available. `.h1` through `.h6` classes are also available, for when you want to match the font styling of a heading but still want your text to be displayed inline. + + + + + + h1. Bootstrap heading + Semibold 36px + + + h2. Bootstrap heading + Semibold 30px + + + h3. Bootstrap heading + Semibold 24px + + + h4. Bootstrap heading + Semibold 18px + + + h5. Bootstrap heading + Semibold 14px + + + h6. Bootstrap heading + Semibold 12px + + + + + +{% highlight html %} +h1. Bootstrap heading +h2. Bootstrap heading +h3. Bootstrap heading +h4. Bootstrap heading +h5. Bootstrap heading +h6. Bootstrap heading +{% endhighlight %} + +### Customizing headings + +Use the included utility classes to recreate the small secondary heading text from Bootstrap 3. + +{% example html %} + + Fancy display heading + With faded secondary text + +{% endexample %} + +## Display headings + +Traditional heading elements are designed to work best in the meat of your page content. When you need a heading to stand out, consider using a **display heading**—a larger, slightly more opinionated heading style. + + + + + + Display 1 + + + Display 2 + + + Display 3 + + + Display 4 + + + + + +{% highlight html %} +Display 1 +Display 2 +Display 3 +Display 4 +{% endhighlight %} + +## Lead + +Make a paragraph stand out by adding `.lead`. + +{% example html %} + + Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Duis mollis, est non commodo luctus. + +{% endexample %} + +## Inline text elements + +Styling for common inline HTML5 elements. + +{% example html %} +You can use the mark tag to highlight text. +This line of text is meant to be treated as deleted text. +This line of text is meant to be treated as no longer accurate. +This line of text is meant to be treated as an addition to the document. +This line of text will render as underlined +This line of text is meant to be treated as fine print. +This line rendered as bold text. +This line rendered as italicized text. +{% endexample %} + +While not shown above, feel free to use `` and `` in HTML5. `` is meant to highlight words or phrases without conveying additional importance while `` is mostly for voice, technical terms, etc. + +## Abbreviations + +Stylized implementation of HTML's `` element for abbreviations and acronyms to show the expanded version on hover. Abbreviations with a `title` attribute have a light dotted bottom border and a help cursor on hover, providing additional context on hover and to users of assistive technologies. + +Add `.initialism` to an abbreviation for a slightly smaller font-size. + +{% example html %} +attr +HTML +{% endexample %} + +## Blockquotes + +For quoting blocks of content from another source within your document. Wrap `` around any HTML as the quote. + +{% example html %} + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante. + +{% endexample %} + +### Naming a source + +Add a `
- - - -
- Sleek, intuitive, and powerful front-end framework for faster and easier web development. - - Explore Bootstrap docs » - - - Report bug - · - Request feature - · - Themes - · - Blog -
+ An overview of Bootstrap, including how to download and use it, some basic templates and examples, and more. +
+ Options for structuring your pages with Bootstrap, including global styles, required scaffolding, grid system, and more. +
+ Styles for displaying content with some of the most commonly used HTML elements, including normalization, typography, images, tables, and more. +
+ Over a dozen reusable components built to provide buttons, dropdowns, input groups, navigation, alerts, and much more. +
+ Bring Bootstrap's components to life with over a dozen custom jQuery plugins. Easily include them all, or one by one. +
+ Learn about the project's history, meet the maintaining teams, and find out how to use the Bootstrap brand. +
+ Guidance on how to upgrade from Bootstrap v3.x to v4.x with emphasis on major changes, what's new, and what's been removed. +
+ A list of the browser bugs that Bootstrap is currently grappling with. +
+ Quickly get a project started with any of our examples ranging from using parts of the framework to custom components and layouts. +
#{code}
tags to code blocks + code = code.sub(/\n*/,'') + code = code.sub(/\n*<\/pre>/,"") + code.strip + end + + end + end +end + +Liquid::Template.register_tag('example', Jekyll::Tags::ExampleBlock) diff --git a/docs/_plugins/markdown-block.rb b/docs/_plugins/markdown-block.rb new file mode 100644 index 000000000..f9f1531b5 --- /dev/null +++ b/docs/_plugins/markdown-block.rb @@ -0,0 +1,20 @@ +module Jekyll + class MarkdownBlock < Liquid::Block + alias_method :render_block, :render + + def initialize(tag_name, markup, tokens) + super + end + + # Uses the default Jekyll markdown parser to + # parse the contents of this block + # + def render(context) + site = context.registers[:site] + converter = site.find_converter_instance(::Jekyll::Converters::Markdown) + converter.convert(render_block(context)) + end + end +end + +Liquid::Template.register_tag('markdown', Jekyll::MarkdownBlock) diff --git a/docs/about/brand.md b/docs/about/brand.md new file mode 100644 index 000000000..fcb8804ae --- /dev/null +++ b/docs/about/brand.md @@ -0,0 +1,76 @@ +--- +layout: docs +title: Brand guidelines +group: about +--- + +Have a need for Bootstrap's brand resources? Great! We have only a few guidelines we follow, and in turn ask you to follow as well. These guidelines were inspired by MailChimp's [Brand Assets](http://mailchimp.com/about/brand-assets/). + +## Mark and logo + +Use either the Bootstrap mark (a capital **B**) or the standard logo (just **Bootstrap**). It should always appear in Helvetica Neue Bold. **Do not use the Twitter bird** in association with Bootstrap. + + + + B + + + B + + + + + Bootstrap + + + Bootstrap + + + +## Download mark + +Download the Bootstrap mark in one of three styles, each available as an SVG file. Right click, Save as. + + + + + + + + + + + + + +## Name + +The project and framework should always be referred to as **Bootstrap**. No Twitter before it, no capital _s_, and no abbreviations except for one, a capital **B**. + + + + Bootstrap + Right + + + BootStrap + Wrong + + + Twitter Bootstrap + Wrong + + + +## Colors + +Our docs and branding use a handful of primary colors to differentiate what *is* Bootstrap from what *is in* Bootstrap. In other words, if it's purple, it's representative of Bootstrap. + + + + + + + + + diff --git a/docs/about/history.md b/docs/about/history.md new file mode 100644 index 000000000..ae4764ee7 --- /dev/null +++ b/docs/about/history.md @@ -0,0 +1,12 @@ +--- +layout: docs +title: History +group: about +redirect_from: "/about/" +--- + +Originally created by a designer and a developer at Twitter, Bootstrap has become one of the most popular front-end frameworks and open source projects in the world. + +Bootstrap was created at Twitter in mid-2010 by [@mdo](https://twitter.com/mdo) and [@fat](https://twitter.com/fat). Prior to being an open-sourced framework, Bootstrap was known as _Twitter Blueprint_. A few months into development, Twitter held its [first Hack Week](https://blog.twitter.com/2010/hack-week) and the project exploded as developers of all skill levels jumped in without any external guidance. It served as the style guide for internal tools development at the company for over a year before its public release, and continues to do so today. + +Originally [released](https://blog.twitter.com/2011/bootstrap-twitter) on [Friday, August 19, 2011](https://twitter.com/mdo/statuses/104620039650557952), we've since had over [twenty releases](https://github.com/twbs/bootstrap/releases), including two major rewrites with v2 and v3. With Bootstrap 2, we added responsive functionality to the entire framework as an optional stylesheet. Building on that with Bootstrap 3, we rewrote the library once more to make it responsive by default with a mobile first approach. diff --git a/site/content/docs/5.0/about/license.md b/docs/about/license.md similarity index 71% rename from site/content/docs/5.0/about/license.md rename to docs/about/license.md index 07e60e00a..997b1c9ef 100644 --- a/site/content/docs/5.0/about/license.md +++ b/docs/about/license.md @@ -1,24 +1,23 @@ --- layout: docs title: License FAQs -description: Commonly asked questions about Bootstrap's open source license. group: about --- -Bootstrap is released under the MIT license and is copyright {{< year >}} Twitter. Boiled down to smaller chunks, it can be described with the following conditions. +Bootstrap is released under the MIT license and is copyright {{ site.time | date: "%Y" }} Twitter. Boiled down to smaller chunks, it can be described with the following conditions. -## It requires you to: +#### It requires you to: -- Keep the license and copyright notice included in Bootstrap's CSS and JavaScript files when you use them in your works +* Keep the license and copyright notice included in Bootstrap's CSS and JavaScript files when you use them in your works -## It permits you to: +#### It permits you to: - Freely download and use Bootstrap, in whole or in part, for personal, private, company internal, or commercial purposes - Use Bootstrap in packages or distributions that you create - Modify the source code - Grant a sublicense to modify and distribute Bootstrap to third parties not included in the license -## It forbids you to: +#### It forbids you to: - Hold the authors and license owners liable for damages as Bootstrap is provided without warranty - Hold the creators or copyright holders of Bootstrap liable @@ -26,9 +25,9 @@ Bootstrap is released under the MIT license and is copyright {{< year >}} Twitte - Use any marks owned by Twitter in any way that might state or imply that Twitter endorses your distribution - Use any marks owned by Twitter in any way that might state or imply that you created the Twitter software in question -## It does not require you to: +#### It does not require you to: - Include the source of Bootstrap itself, or of any modifications you may have made to it, in any redistribution you may assemble that includes it - Submit changes that you make to Bootstrap back to the Bootstrap project (though such feedback is encouraged) -The full Bootstrap license is located [in the project repository]({{< param repo >}}/blob/v{{< param current_version >}}/LICENSE) for more information. +The full Bootstrap license is located [in the project repository]({{ site.repo }}/blob/master/LICENSE) for more information. diff --git a/docs/about/team.md b/docs/about/team.md new file mode 100644 index 000000000..2492471cf --- /dev/null +++ b/docs/about/team.md @@ -0,0 +1,21 @@ +--- +layout: docs +title: Team +group: about +--- + +Bootstrap is maintained by the founding team and a small group of invaluable core contributors, with the massive support and involvement of our community. + + + {% for member in site.data.core-team %} + + + + + {{ member.name }} @{{ member.user }} + + + {% endfor %} + + +Get involved with Bootstrap development by [opening an issue](https://github.com/twbs/bootstrap/issues/new) or submitting a pull request. Read our [contributing guidelines](https://github.com/twbs/bootstrap/blob/master/CONTRIBUTING.md) for information on how we develop. diff --git a/site/content/docs/5.0/about/translations.md b/docs/about/translations.md similarity index 57% rename from site/content/docs/5.0/about/translations.md rename to docs/about/translations.md index e719e3a84..de6519bb3 100644 --- a/site/content/docs/5.0/about/translations.md +++ b/docs/about/translations.md @@ -1,19 +1,16 @@ --- layout: docs title: Translations -description: Links to community-translated Bootstrap documentation sites. group: about --- Community members have translated Bootstrap's documentation into various languages. None are officially supported and they may not always be up to date. -{{< translations.inline >}} -{{ range .Site.Data.translations -}} - {{ .description }} ({{ .name }}) -{{ end -}} +{% for language in site.data.translations %} + {{ language.description }} ({{ language.name }}) +{% endfor %} -{{< /translations.inline >}} **We don't help organize or host translations, we just link to them.** diff --git a/docs/apple-touch-icon.png b/docs/apple-touch-icon.png new file mode 100644 index 000000000..b6b1e843b Binary files /dev/null and b/docs/apple-touch-icon.png differ diff --git a/docs/assets/brand/bootstrap-outline.svg b/docs/assets/brand/bootstrap-outline.svg new file mode 100644 index 000000000..9f9794c23 --- /dev/null +++ b/docs/assets/brand/bootstrap-outline.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + diff --git a/docs/assets/brand/bootstrap-punchout.svg b/docs/assets/brand/bootstrap-punchout.svg new file mode 100644 index 000000000..7368058bc --- /dev/null +++ b/docs/assets/brand/bootstrap-punchout.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + diff --git a/docs/assets/brand/bootstrap-solid.svg b/docs/assets/brand/bootstrap-solid.svg new file mode 100644 index 000000000..6c2211d86 --- /dev/null +++ b/docs/assets/brand/bootstrap-solid.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + diff --git a/docs/assets/css/docs.min.css b/docs/assets/css/docs.min.css new file mode 100644 index 000000000..376b24e88 --- /dev/null +++ b/docs/assets/css/docs.min.css @@ -0,0 +1,7 @@ +/*! + * Bootstrap Docs (http://getbootstrap.com) + * Copyright 2011-2015 Twitter, Inc. + * Licensed under the Creative Commons Attribution 3.0 Unported License. For + * details, see https://creativecommons.org/licenses/by/3.0/. + */.bd-booticon{display:block;width:9rem;height:9rem;font-size:6.5rem;line-height:9rem;color:#fff;text-align:center;cursor:default;background-color:#563d7c;border-radius:15%}.bd-booticon.inverse{color:#563d7c;background-color:#fff}.bd-booticon.outline{background-color:transparent;border:1px solid #cdbfe3}.bd-navbar{font-size:87.5%}.bd-navbar .navbar-nav .nav-link{color:#8e869d}.bd-navbar .navbar-nav .nav-link.active,.bd-navbar .navbar-nav .nav-link:focus,.bd-navbar .navbar-nav .nav-link:hover{color:#373a3c;background-color:transparent}.bd-navbar .navbar-nav .nav-link.active{color:#000}.bd-navbar .dropdown-menu{font-size:inherit}@media (max-width:767px){.bd-navbar .nav-link{float:none}.bd-navbar .nav-link+.nav-link{margin-left:0}}.bd-masthead{position:relative;padding:3rem .9375rem 2rem;color:#cdbfe3;text-align:center;background-image:-webkit-linear-gradient(135deg,#271b38,#563d7c,#7952b3);background-image:-webkit-linear-gradient(315deg,#271b38,#563d7c,#7952b3);background-image:-o-linear-gradient(315deg,#271b38,#563d7c,#7952b3);background-image:linear-gradient(135deg,#271b38,#563d7c,#7952b3);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF271B38', endColorstr='#FF7952B3', gradientType='1')}.bd-masthead .bd-booticon{margin:0 auto 2rem;color:#cdbfe3;border-color:#cdbfe3}.bd-masthead h1{font-weight:300;line-height:1}.bd-masthead .lead{margin-left:auto;margin-right:auto;margin-bottom:2rem;font-size:1.25rem;color:#fff}.bd-masthead .version{margin-top:-1rem;margin-bottom:2rem}.bd-masthead .btn{width:100%;padding:1rem 2rem;font-size:1.25rem;font-weight:500;color:#ffe484;border-color:#ffe484}.bd-masthead .btn:hover{color:#2a2730;background-color:#ffe484;border-color:#ffe484}.bd-masthead .carbonad{margin-bottom:-2rem!important}@media (min-width:544px){.bd-masthead{padding-top:8rem;padding-bottom:2rem}.bd-masthead .btn{width:auto}.bd-masthead .carbonad{margin-bottom:0!important}}@media (min-width:768px){.bd-masthead{padding-bottom:4rem}.bd-masthead .bd-header{margin-bottom:4rem}.bd-masthead h1{font-size:4rem}.bd-masthead .lead{font-size:1.5rem}.bd-masthead .carbonad{margin-top:3rem!important}}@media (min-width:992px){.bd-masthead .lead{width:85%;font-size:2rem}}.bd-featurette{padding-top:3rem;padding-bottom:3rem;font-size:1rem;line-height:1.5;color:#555;text-align:center;background-color:#fff;border-top:1px solid #eee}.bd-featurette .highlight{text-align:left}.bd-featurette .lead{margin-right:auto;margin-bottom:2rem;margin-left:auto;font-size:1rem;text-align:center}@media (min-width:544px){.bd-featurette{text-align:left}}@media (min-width:768px){.bd-featurette .col-sm-6:first-child{padding-right:2.8125rem}.bd-featurette .col-sm-6:last-child{padding-left:2.8125rem}}.bd-featurette-title{margin-bottom:.5rem;font-size:2rem;font-weight:400;color:#333;text-align:center}.half-rule{width:6rem;margin:2.5rem auto}@media (min-width:544px){.half-rule{margin-right:0;margin-left:0}}.bd-featurette h4{margin-top:1rem;margin-bottom:.5rem;font-weight:400;color:#333}.bd-featurette-img{display:block;margin-bottom:1.25rem;color:#333}.bd-featurette-img:hover{color:#0275d8;text-decoration:none}.bd-featurette-img img{display:block;margin-bottom:1rem}@media (min-width:480px){.bd-featurette .img-fluid{margin-top:2rem}}@media (min-width:768px){.bd-featurette{padding-top:6rem;padding-bottom:6rem}.bd-featurette-title{font-size:2.5rem}.bd-featurette-title+.lead{font-size:1.5rem}.bd-featurette .lead{max-width:80%}.bd-featurette .img-fluid{margin-top:0}}.bd-featured-sites{margin-right:-1px;margin-left:-1px}.bd-featured-sites .col-xs-6{padding:1px}.bd-featured-sites .img-fluid{margin-top:0}@media (min-width:768px){.bd-featured-sites .col-sm-3:first-child img{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.bd-featured-sites .col-sm-3:last-child img{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}}.carbonad{width:auto!important;height:auto!important;padding:1.25rem!important;margin:2rem -1.875rem -2rem!important;overflow:hidden;font-size:.8rem!important;font-family:inherit!important;line-height:1rem!important;color:#cdbfe3!important;text-align:left;background:#3e2c5a!important;border:0!important}.carbonad-img{margin:0!important}.carbonad-tag,.carbonad-text{display:block!important;float:none!important;width:auto!important;height:auto!important;margin-left:145px!important;font-family:inherit!important}.carbonad-text{padding-top:0!important}.carbonad-tag{color:inherit!important;text-align:left!important}.carbonad-tag a,.carbonad-text a{color:#cdbfe3!important}.carbonad-tag a:hover,.carbonad-text a:hover{color:#fff!important}.carbonad #azcarbon>img{display:none}@media (min-width:544px){.carbonad{width:330px!important;padding:1rem!important;margin-right:auto!important;margin-left:auto!important;border-radius:.25rem}}.bd-content>table{display:block;width:100%;max-width:100%;overflow-y:auto;margin-bottom:1rem}.bd-content>table>tbody>tr>td,.bd-content>table>tbody>tr>th,.bd-content>table>tfoot>tr>td,.bd-content>table>tfoot>tr>th,.bd-content>table>thead>tr>td,.bd-content>table>thead>tr>th{padding:.75rem;line-height:1.5;vertical-align:top;border:1px solid #eceeef}.bd-content>table>tbody>tr>td>p:last-child,.bd-content>table>tbody>tr>th>p:last-child,.bd-content>table>tfoot>tr>td>p:last-child,.bd-content>table>tfoot>tr>th>p:last-child,.bd-content>table>thead>tr>td>p:last-child,.bd-content>table>thead>tr>th>p:last-child{margin-bottom:0}.bd-content>table td:first-child>code{white-space:nowrap}.bd-content>h2:not(:first-child){margin-top:3rem}.bd-content>h3{margin-top:1.5rem}.bd-content>ol li,.bd-content>ul li{margin-bottom:.25rem}@media (min-width:544px){.bd-title{font-size:3rem}.bd-title+p{font-size:1.25rem;font-weight:300}}#markdown-toc>li:first-child{display:none}#markdown-toc ul{padding-left:2rem;margin-top:.25rem;margin-bottom:.25rem}.bd-pageheader{padding:2rem .9375rem;margin-bottom:1.5rem;color:#cdbfe3;text-align:center;background-color:#563d7c}.bd-pageheader .container{position:relative}.bd-pageheader h1{font-size:3rem;font-weight:400;color:#fff}.bd-pageheader p{margin-bottom:0;font-size:1.25rem;font-weight:300}@media (min-width:544px){.bd-pageheader{padding-top:4rem;padding-bottom:4rem;margin-bottom:3rem;text-align:left}.bd-pageheader .carbonad{margin:2rem 0 0!important}}@media (min-width:768px){.bd-pageheader h1{font-size:4rem}.bd-pageheader p{font-size:1.5rem}}@media (min-width:992px){.bd-pageheader h1,.bd-pageheader p{margin-right:380px}.bd-pageheader .carbonad{position:absolute;top:0;right:.75rem;margin:0!important}}#skippy{display:block;padding:1em;color:#fff;background-color:#563d7c;outline:0}#skippy .skiplink-text{padding:.5em;outline:1px dotted}@media (min-width:768px){.bd-sidebar{padding-left:1rem}}.bd-search{position:relative;margin-bottom:1.5rem}.bd-search .form-control{height:2.45rem;padding-top:.4rem;padding-bottom:.4rem;background-color:#fafafa}.bd-search .form-control:focus{background-color:#fff}.bd-search-results{right:0;display:block;padding:0;overflow:hidden;font-size:.9rem}.bd-search-results:empty{display:none}.bd-search-results .dropdown-item{padding-left:.75rem;padding-right:.75rem}.bd-search-results .dropdown-item:first-child{margin-top:.25rem}.bd-search-results .dropdown-item:last-child{margin-bottom:.25rem}.bd-search-results .no-results{padding:.75rem 1rem;color:#7a7a7a;text-align:center;white-space:normal}.bd-sidenav{display:none}.bd-toc-link{display:block;padding:.25rem .75rem;color:#55595c}.bd-toc-link:focus,.bd-toc-link:hover{color:#0275d8;text-decoration:none}.active>.bd-toc-link{font-weight:500;color:#373a3c}.active>.bd-sidenav{display:block}.bd-toc-item.active{margin-top:1rem;margin-bottom:1rem}.bd-toc-item:first-child{margin-top:0}.bd-toc-item:last-child{margin-bottom:2rem}.bd-sidebar .nav>li>a{display:block;padding:.25rem .75rem;font-size:90%;color:#99979c}.bd-sidebar .nav>li>a:focus,.bd-sidebar .nav>li>a:hover{color:#0275d8;text-decoration:none;background-color:transparent}.bd-sidebar .nav>.active:focus>a,.bd-sidebar .nav>.active:hover>a,.bd-sidebar .nav>.active>a{font-weight:500;color:#373a3c;background-color:transparent}.bd-footer{padding:4rem 0;margin-top:4rem;font-size:85%;background-color:#f7f7f7;text-align:center}.bd-footer a{font-weight:500;color:#55595c}.bd-footer a:hover{color:#0275d8}.bd-footer p{margin-bottom:0}@media (min-width:544px){.bd-footer{text-align:left}}.bd-footer-links{padding-left:0;margin-bottom:1rem}.bd-footer-links li{display:inline-block}.bd-footer-links li+li{margin-left:1rem}.bd-example-row .row{margin-bottom:1rem}.bd-example-row .row>[class^=col-]{padding-top:.75rem;padding-bottom:.75rem;background-color:rgba(86,61,124,.15);border:1px solid rgba(86,61,124,.2)}.bd-example-container{min-width:16rem;max-width:25rem;margin-left:auto;margin-right:auto}.bd-example-container-header{height:3rem;margin-bottom:.5rem;background-color:#daeeff;border-radius:.25rem}.bd-example-container-sidebar{float:right;width:4rem;height:8rem;background-color:#fae3c4;border-radius:.25rem}.bd-example-container-body{height:8rem;margin-right:4.5rem;background-color:#957bbe;border-radius:.25rem}.bd-example-container-fluid{max-width:none}.bd-example{position:relative;padding:1rem;margin:1rem -1rem;border:solid #f7f7f9;border-width:.2rem 0 0}.bd-example::after{content:"";display:table;clear:both}@media (min-width:544px){.bd-example{margin-left:0;margin-right:0;margin-bottom:0;padding:1.5rem;border-width:.2rem}}.bd-example+.clipboard+.highlight,.bd-example+.highlight{margin-top:0}.bd-example+p{margin-top:2rem}.bd-example .container{width:auto}.bd-example>.form-control+.form-control{margin-top:.5rem}.bd-example>.card{max-width:20rem}.bd-example>.alert+.alert,.bd-example>.nav+.nav,.bd-example>.navbar+.navbar,.bd-example>.progress+.btn,.bd-example>.progress+.progress{margin-top:1rem}.bd-example>.dropdown-menu:first-child{position:static;display:block}.bd-example>.close{float:none}.bd-example-type .table .type-info{color:#999;vertical-align:middle}.bd-example-type .table td{padding:1rem 0;border-color:#eee}.bd-example-type .table tr:first-child td{border-top:0}.bd-example-type h1,.bd-example-type h2,.bd-example-type h3,.bd-example-type h4,.bd-example-type h5,.bd-example-type h6{margin:0}.bd-example-bg-classes p{padding:1rem}.bd-example>img+img{margin-left:.5rem}.bd-example>.btn-group{margin-top:.25rem;margin-bottom:.25rem}.bd-example>.btn-toolbar+.btn-toolbar{margin-top:.5rem}.bd-example-control-sizing input[type=text]+input[type=text],.bd-example-control-sizing select{margin-top:.5rem}.bd-example-form .input-group{margin-bottom:.5rem}.bd-example>textarea.form-control{resize:vertical}.bd-example>.list-group{max-width:400px}.bd-example .navbar-fixed-top{position:static;margin:-1rem -1rem 1rem}.bd-example .navbar-fixed-bottom{position:static;margin:1rem -1rem -1rem}@media (min-width:544px){.bd-example .navbar-fixed-top{margin:-1.5rem -1.5rem 1rem}.bd-example .navbar-fixed-bottom{margin:1rem -1.5rem -1.5rem}}.bd-example .pagination{margin-top:.5rem;margin-bottom:.5rem}.bd-example>.pager{margin-top:0}.bd-example-modal{background-color:#f5f5f5}.bd-example-modal .modal{position:relative;top:auto;right:auto;bottom:auto;left:auto;z-index:1;display:block}.bd-example-modal .modal-dialog{left:auto;margin-right:auto;margin-left:auto}.bd-example>.dropdown>.dropdown-toggle{float:left}.bd-example>.dropdown>.dropdown-menu{position:static;display:block;margin-bottom:.25rem;clear:left}.bd-example-tabs .nav-tabs{margin-bottom:1rem}.bd-example-tooltips{text-align:center}.bd-example-tooltips>.btn{margin-top:.25rem;margin-bottom:.25rem}.bd-example-popover-static{padding-bottom:1.5rem;background-color:#f9f9f9}.bd-example-popover-static .popover{position:relative;display:block;float:left;width:260px;margin:1.25rem}.tooltip-demo a{white-space:nowrap}.bd-example-tooltip-static .tooltip{position:relative;display:inline-block;margin:10px 20px;opacity:1}.scrollspy-example{position:relative;height:200px;margin-top:.5rem;overflow:auto}.bd-example>.center-block:not(img){max-width:200px;padding:.5rem;background-color:#eee}.bd-example>.bg-danger:not(.navbar),.bd-example>.bg-info:not(.navbar),.bd-example>.bg-inverse:not(.navbar),.bd-example>.bg-primary:not(.navbar),.bd-example>.bg-success:not(.navbar),.bd-example>.bg-warning:not(.navbar){padding:.5rem;margin-top:.5rem;margin-bottom:.5rem}.highlight{padding:1rem;margin:1rem -1rem;background-color:#f7f7f9}@media (min-width:544px){.highlight{padding:1.5rem;margin-right:0;margin-left:0}}.highlight pre{padding:0;margin-top:0;margin-bottom:0;background-color:transparent;border:0}.highlight pre code{font-size:inherit;color:#373a3c}#focusedInput{border-color:#66afe9;outline:0;outline:thin dotted\9;-webkit-box-shadow:0 0 .5rem rgba(102,175,233,.6);box-shadow:0 0 .5rem rgba(102,175,233,.6)}.table-responsive .highlight pre{white-space:normal}.bd-table th small,.responsive-utilities th small{display:block;font-weight:400;color:#999}.responsive-utilities tbody th{font-weight:400}.responsive-utilities td{text-align:center}.responsive-utilities td.is-visible{color:#468847;background-color:#dff0d8!important}.responsive-utilities td.is-hidden{color:#ccc;background-color:#f9f9f9!important}.responsive-utilities-test{margin-top:.25rem}.responsive-utilities-test .col-xs-6{margin-bottom:.5rem}.responsive-utilities-test span{display:block;padding:1rem .5rem;font-size:1rem;font-weight:700;line-height:1.1;text-align:center;border-radius:.25rem}.hidden-on .col-xs-6>.not-visible,.visible-on .col-xs-6>.not-visible{color:#999;border:1px solid #ddd}.hidden-on .col-xs-6 .visible,.visible-on .col-xs-6 .visible{color:#468847;background-color:#dff0d8;border:1px solid #d6e9c6}@media (max-width:543px){.hidden-xs-only{display:none!important}}@media (min-width:544px) and (max-width:767px){.hidden-sm-only{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-md-only{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-lg-only{display:none!important}}@media (min-width:1200px){.hidden-xl-only{display:none!important}}.btn-bs{font-weight:500;color:#7952b3;border-color:#7952b3}.btn-bs:active,.btn-bs:focus,.btn-bs:hover{color:#fff;background-color:#7952b3;border-color:#7952b3}.bd-callout{padding:1.25rem;margin-top:1.25rem;margin-bottom:1.25rem;border:1px solid #eee;border-left-width:.25rem;border-radius:.25rem}.bd-callout h4{margin-top:0;margin-bottom:.25rem}.bd-callout p:last-child{margin-bottom:0}.bd-callout code{border-radius:.25rem}.bd-callout+.bd-callout{margin-top:-.25rem}.bd-callout-info{border-left-color:#5bc0de}.bd-callout-info h4{color:#5bc0de}.bd-callout-warning{border-left-color:#f0ad4e}.bd-callout-warning h4{color:#f0ad4e}.bd-callout-danger{border-left-color:#d9534f}.bd-callout-danger h4{color:#d9534f}.bd-examples .img-thumbnail{margin-bottom:.75rem}.bd-examples h4{margin-bottom:.25rem}.bd-examples p{margin-bottom:1.25rem}@media (max-width:480px){.bd-examples{margin-right:-.75rem;margin-left:-.75rem}.bd-examples>[class^=col-]{padding-right:.75rem;padding-left:.75rem}}.bd-team{margin-bottom:1.5rem}.bd-team .team-member{line-height:2rem;color:#555}.bd-team .team-member:hover{color:#333;text-decoration:none}.bd-team .github-btn{border:none;float:right;width:180px;height:1.25rem;margin-top:.25rem}.bd-team img{float:left;width:2rem;margin-right:.5rem;border-radius:.25rem}.bd-browser-bugs td p{margin-bottom:0}.bd-browser-bugs th:first-child{width:18%}.bd-brand-logos{display:table;width:100%;margin-bottom:1rem;overflow:hidden;color:#563d7c;background-color:#f9f9f9;border-radius:.25rem}.bd-brand-item{padding:4rem 0;text-align:center}.bd-brand-item+.bd-brand-item{border-top:1px solid #fff}.bd-brand-logos .inverse{color:#fff;background-color:#563d7c}.bd-brand-item h1,.bd-brand-item h3{margin-top:0;margin-bottom:0}.bd-brand-item .bd-booticon{margin-right:auto;margin-left:auto}@media (min-width:768px){.bd-brand-item{display:table-cell;width:1%}.bd-brand-item+.bd-brand-item{border-top:0;border-left:1px solid #fff}.bd-brand-item h1{font-size:4rem}}.color-swatches{margin:0 -5px;overflow:hidden}.color-swatch{float:left;width:4rem;height:4rem;margin-right:.25rem;margin-left:.25rem;border-radius:.25rem}@media (min-width:768px){.color-swatch{width:6rem;height:6rem}}.color-swatches .bd-purple{background-color:#563d7c}.color-swatches .bd-purple-light{background-color:#cdbfe3}.color-swatches .bd-purple-lighter{background-color:#e5e1ea}.color-swatches .bd-gray{background-color:#f9f9f9}.bd-clipboard{position:relative;display:none;float:right}.bd-clipboard+.highlight{margin-top:0}.btn-clipboard{position:absolute;top:.5rem;right:.5rem;z-index:10;display:block;padding:.25rem .5rem;font-size:75%;color:#818a91;cursor:pointer;background-color:transparent;border-radius:.25rem}.btn-clipboard:hover{color:#fff;background-color:#027de7}@media (min-width:768px){.bd-clipboard{display:block}}.hll{background-color:#ffc}.c{color:#999}.err{color:#A00;background-color:#FAA}.k{color:#069}.o{color:#555}.cm{color:#999}.cp{color:#099}.c1{color:#999}.cs{color:#999}.gd{background-color:#FCC;border:1px solid #C00}.ge{font-style:italic}.gr{color:red}.gh{color:#030}.gi{background-color:#CFC;border:1px solid #0C0}.go{color:#AAA}.gp{color:#009}.gu{color:#030}.gt{color:#9C6}.kc{color:#069}.kd{color:#069}.kn{color:#069}.kp{color:#069}.kr{color:#069}.kt{color:#078}.m{color:#F60}.s{color:#d44950}.na{color:#4f9fcf}.nb{color:#366}.nc{color:#0A8}.no{color:#360}.nd{color:#99F}.ni{color:#999}.ne{color:#C00}.nf{color:#C0F}.nl{color:#99F}.nn{color:#0CF}.nt{color:#2f6f9f}.nv{color:#033}.ow{color:#000}.w{color:#bbb}.mf{color:#F60}.mh{color:#F60}.mi{color:#F60}.mo{color:#F60}.sb{color:#C30}.sc{color:#C30}.sd{color:#C30;font-style:italic}.s2{color:#C30}.se{color:#C30}.sh{color:#C30}.si{color:#A00}.sx{color:#C30}.sr{color:#3AA}.s1{color:#C30}.ss{color:#FC3}.bp{color:#366}.vc{color:#033}.vg{color:#033}.vi{color:#033}.il{color:#F60}.css .nt+.nt,.css .o,.css .o+.nt{color:#999}.anchorjs-link{color:inherit}@media (max-width:480px){.anchorjs-link{display:none}}:hover>.anchorjs-link{opacity:.75;-webkit-transition:color .16s linear;-o-transition:color .16s linear;transition:color .16s linear}.anchorjs-link:focus,:hover>.anchorjs-link:hover{text-decoration:none;opacity:1} +/*# sourceMappingURL=docs.min.css.map */ \ No newline at end of file diff --git a/docs/assets/css/docs.min.css.map b/docs/assets/css/docs.min.css.map new file mode 100644 index 000000000..06aa71ccc --- /dev/null +++ b/docs/assets/css/docs.min.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["docs/assets/css/docs.min.css"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/docs/assets/img/bs-themes.png b/docs/assets/img/bs-themes.png new file mode 100644 index 000000000..925621309 Binary files /dev/null and b/docs/assets/img/bs-themes.png differ diff --git a/docs/assets/img/components.png b/docs/assets/img/components.png new file mode 100644 index 000000000..2cbee5463 Binary files /dev/null and b/docs/assets/img/components.png differ diff --git a/docs/assets/img/devices.png b/docs/assets/img/devices.png new file mode 100644 index 000000000..ecd079f1e Binary files /dev/null and b/docs/assets/img/devices.png differ diff --git a/docs/assets/img/expo-lyft.jpg b/docs/assets/img/expo-lyft.jpg new file mode 100644 index 000000000..763db8208 Binary files /dev/null and b/docs/assets/img/expo-lyft.jpg differ diff --git a/docs/assets/img/expo-newsweek.jpg b/docs/assets/img/expo-newsweek.jpg new file mode 100644 index 000000000..bcecdea51 Binary files /dev/null and b/docs/assets/img/expo-newsweek.jpg differ diff --git a/docs/assets/img/expo-riot.jpg b/docs/assets/img/expo-riot.jpg new file mode 100644 index 000000000..e9c6bd1ab Binary files /dev/null and b/docs/assets/img/expo-riot.jpg differ diff --git a/docs/assets/img/expo-vogue.jpg b/docs/assets/img/expo-vogue.jpg new file mode 100644 index 000000000..324f81849 Binary files /dev/null and b/docs/assets/img/expo-vogue.jpg differ diff --git a/docs/assets/img/sass.png b/docs/assets/img/sass.png new file mode 100644 index 000000000..7b2b2a5a0 Binary files /dev/null and b/docs/assets/img/sass.png differ diff --git a/docs/assets/js/docs.min.js b/docs/assets/js/docs.min.js new file mode 100644 index 000000000..59cef64dd --- /dev/null +++ b/docs/assets/js/docs.min.js @@ -0,0 +1,29 @@ +/*! + * AnchorJS - v2.0.0 - 2015-10-31 + * https://github.com/bryanbraun/anchorjs + * Copyright (c) 2015 Bryan Braun; Licensed MIT + */ +function AnchorJS(a){"use strict";function b(a){d.options.icon=d.options.hasOwnProperty("icon")?a.icon:"",d.options.visible=d.options.hasOwnProperty("visible")?a.visible:"hover",d.options.placement=d.options.hasOwnProperty("placement")?a.placement:"right",d.options["class"]=d.options.hasOwnProperty("class")?a["class"]:"",d.options.truncate=d.options.hasOwnProperty("truncate")?Math.floor(a.truncate):64}function c(){if(null===document.head.querySelector("style.anchorjs")){var a,b=document.createElement("style"),c=" .anchorjs-link { opacity: 0; text-decoration: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }",d=" *:hover > .anchorjs-link, .anchorjs-link:focus { opacity: 1; }",e=' @font-face { font-family: "anchorjs-icons"; font-style: normal; font-weight: normal; src: url(data:application/x-font-ttf;charset=utf-8;base64,AAEAAAALAIAAAwAwT1MvMg8SBTUAAAC8AAAAYGNtYXAWi9QdAAABHAAAAFRnYXNwAAAAEAAAAXAAAAAIZ2x5Zgq29TcAAAF4AAABNGhlYWQEZM3pAAACrAAAADZoaGVhBhUDxgAAAuQAAAAkaG10eASAADEAAAMIAAAAFGxvY2EAKACuAAADHAAAAAxtYXhwAAgAVwAAAygAAAAgbmFtZQ5yJ3cAAANIAAAB2nBvc3QAAwAAAAAFJAAAACAAAwJAAZAABQAAApkCzAAAAI8CmQLMAAAB6wAzAQkAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAABAAADpywPA/8AAQAPAAEAAAAABAAAAAAAAAAAAAAAgAAAAAAADAAAAAwAAABwAAQADAAAAHAADAAEAAAAcAAQAOAAAAAoACAACAAIAAQAg6cv//f//AAAAAAAg6cv//f//AAH/4xY5AAMAAQAAAAAAAAAAAAAAAQAB//8ADwABAAAAAAAAAAAAAgAANzkBAAAAAAEAAAAAAAAAAAACAAA3OQEAAAAAAQAAAAAAAAAAAAIAADc5AQAAAAACADEARAJTAsAAKwBUAAABIiYnJjQ/AT4BMzIWFxYUDwEGIicmND8BNjQnLgEjIgYPAQYUFxYUBw4BIwciJicmND8BNjIXFhQPAQYUFx4BMzI2PwE2NCcmNDc2MhcWFA8BDgEjARQGDAUtLXoWOR8fORYtLTgKGwoKCjgaGg0gEhIgDXoaGgkJBQwHdR85Fi0tOAobCgoKOBoaDSASEiANehoaCQkKGwotLXoWOR8BMwUFLYEuehYXFxYugC44CQkKGwo4GkoaDQ0NDXoaShoKGwoFBe8XFi6ALjgJCQobCjgaShoNDQ0NehpKGgobCgoKLYEuehYXAAEAAAABAACiToc1Xw889QALBAAAAAAA0XnFFgAAAADRecUWAAAAAAJTAsAAAAAIAAIAAAAAAAAAAQAAA8D/wAAABAAAAAAAAlMAAQAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAACAAAAAoAAMQAAAAAACgAUAB4AmgABAAAABQBVAAIAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAADgCuAAEAAAAAAAEADgAAAAEAAAAAAAIABwCfAAEAAAAAAAMADgBLAAEAAAAAAAQADgC0AAEAAAAAAAUACwAqAAEAAAAAAAYADgB1AAEAAAAAAAoAGgDeAAMAAQQJAAEAHAAOAAMAAQQJAAIADgCmAAMAAQQJAAMAHABZAAMAAQQJAAQAHADCAAMAAQQJAAUAFgA1AAMAAQQJAAYAHACDAAMAAQQJAAoANAD4YW5jaG9yanMtaWNvbnMAYQBuAGMAaABvAHIAagBzAC0AaQBjAG8AbgBzVmVyc2lvbiAxLjAAVgBlAHIAcwBpAG8AbgAgADEALgAwYW5jaG9yanMtaWNvbnMAYQBuAGMAaABvAHIAagBzAC0AaQBjAG8AbgBzYW5jaG9yanMtaWNvbnMAYQBuAGMAaABvAHIAagBzAC0AaQBjAG8AbgBzUmVndWxhcgBSAGUAZwB1AGwAYQByYW5jaG9yanMtaWNvbnMAYQBuAGMAaABvAHIAagBzAC0AaQBjAG8AbgBzRm9udCBnZW5lcmF0ZWQgYnkgSWNvTW9vbi4ARgBvAG4AdAAgAGcAZQBuAGUAcgBhAHQAZQBkACAAYgB5ACAASQBjAG8ATQBvAG8AbgAuAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==) format("truetype"); }',f=" [data-anchorjs-icon]::after { content: attr(data-anchorjs-icon); }";b.className="anchorjs",b.appendChild(document.createTextNode("")),a=document.head.querySelector('[rel="stylesheet"], style'),void 0===a?document.head.appendChild(b):document.head.insertBefore(b,a),b.sheet.insertRule(c,b.sheet.cssRules.length),b.sheet.insertRule(d,b.sheet.cssRules.length),b.sheet.insertRule(f,b.sheet.cssRules.length),b.sheet.insertRule(e,b.sheet.cssRules.length)}}var d=this;this.options=a||{},b(a),this.add=function(a){var d,e,f,g,h,i,j,k,l,m,n,o;if(b(this.options),a){if("string"!=typeof a)throw new Error("The selector provided to AnchorJS was invalid.")}else a="h1, h2, h3, h4, h5, h6";if(d=document.querySelectorAll(a),0===d.length)return!1;for(c(),e=document.querySelectorAll("[id]"),f=[].map.call(e,function(a){return a.id}),h=0;hd;d++)c[d].fn.apply(c[d].ctx,b);return this},off:function(a,b){var c=this.e||(this.e={}),d=c[a],e=[];if(d&&b)for(var f=0,g=d.length;g>f;f++)d[f].fn!==b&&d[f].fn._!==b&&e.push(d[f]);return e.length?c[a]=e:delete c[a],this}},b.exports=d},{}],8:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}c.__esModule=!0;var f=function(){function a(a,b){for(var c=0;c>>0;if("function"!=typeof a)throw TypeError();var d,e=arguments[1];for(d=0;c>d;d++)d in b&&a.call(e,b[d],d,b)}),function(a){var b="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";a.atob=a.atob||function(a){a=String(a);var c,d=0,e=[],f=0,g=0;if(a=a.replace(/\s/g,""),a.length%4===0&&(a=a.replace(/=+$/,"")),a.length%4===1)throw Error("InvalidCharacterError");if(/[^+/0-9A-Za-z]/.test(a))throw Error("InvalidCharacterError");for(;d>16&255)),e.push(String.fromCharCode(f>>8&255)),e.push(String.fromCharCode(255&f)),g=0,f=0),d+=1;return 12===g?(f>>=4,e.push(String.fromCharCode(255&f))):18===g&&(f>>=2,e.push(String.fromCharCode(f>>8&255)),e.push(String.fromCharCode(255&f))),e.join("")},a.btoa=a.btoa||function(a){a=String(a);var c,d,e,f,g,h,i,j=0,k=[];if(/[^\x00-\xFF]/.test(a))throw Error("InvalidCharacterError");for(;j>2,g=(3&c)<<4|d>>4,h=(15&d)<<2|e>>6,i=63&e,j===a.length+2?(h=64,i=64):j===a.length+1&&(i=64),k.push(b.charAt(f),b.charAt(g),b.charAt(h),b.charAt(i));return k.join("")}}(a),Object.prototype.hasOwnProperty||(Object.prototype.hasOwnProperty=function(a){var b=this.__proto__||this.constructor.prototype;return a in this&&(!(a in b)||b[a]!==this[a])}),function(){if("performance"in a==0&&(a.performance={}),Date.now=Date.now||function(){return(new Date).getTime()},"now"in a.performance==0){var b=Date.now();performance.timing&&performance.timing.navigationStart&&(b=performance.timing.navigationStart),a.performance.now=function(){return Date.now()-b}}}(),a.requestAnimationFrame||(a.webkitRequestAnimationFrame?!function(a){a.requestAnimationFrame=function(b){return webkitRequestAnimationFrame(function(){b(a.performance.now())})},a.cancelAnimationFrame=webkitCancelAnimationFrame}(a):a.mozRequestAnimationFrame?!function(a){a.requestAnimationFrame=function(b){return mozRequestAnimationFrame(function(){b(a.performance.now())})},a.cancelAnimationFrame=mozCancelAnimationFrame}(a):!function(a){a.requestAnimationFrame=function(b){return a.setTimeout(b,1e3/60)},a.cancelAnimationFrame=a.clearTimeout}(a))}}(this),function(a,b){"object"==typeof exports&&"object"==typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):"object"==typeof exports?exports.Holder=b():a.Holder=b()}(this,function(){return function(a){function b(d){if(c[d])return c[d].exports;var e=c[d]={exports:{},id:d,loaded:!1};return a[d].call(e.exports,e,e.exports,b),e.loaded=!0,e.exports}var c={};return b.m=a,b.c=c,b.p="",b(0)}([function(a,b,c){a.exports=c(1)},function(a,b,c){(function(b){function d(a,b,c,d){var g=e(c.substr(c.lastIndexOf(a.domain)),a);g&&f({mode:null,el:d,flags:g,engineSettings:b})}function e(a,b){var c={theme:z(D.settings.themes.gray,null),stylesheets:b.stylesheets,instanceOptions:b},d=a.split("?"),e=d[0].split("/");c.holderURL=a;var f=e[1],g=f.match(/([\d]+p?)x([\d]+p?)/);if(!g)return!1;if(c.fluid=-1!==f.indexOf("p"),c.dimensions={width:g[1].replace("p","%"),height:g[2].replace("p","%")},2===d.length){var h=r.parse(d[1]);if(h.bg&&(c.theme.background=t.parseColor(h.bg)),h.fg&&(c.theme.foreground=t.parseColor(h.fg)),h.bg&&!h.fg&&(c.autoFg=!0),h.theme&&c.instanceOptions.themes.hasOwnProperty(h.theme)&&(c.theme=z(c.instanceOptions.themes[h.theme],null)),h.text&&(c.text=h.text),h.textmode&&(c.textmode=h.textmode),h.size&&(c.size=h.size),h.font&&(c.font=h.font),h.align&&(c.align=h.align),c.nowrap=t.truthy(h.nowrap),c.auto=t.truthy(h.auto),c.outline=t.truthy(h.outline),t.truthy(h.random)){D.vars.cache.themeKeys=D.vars.cache.themeKeys||Object.keys(c.instanceOptions.themes);var i=D.vars.cache.themeKeys[0|Math.random()*D.vars.cache.themeKeys.length];c.theme=z(c.instanceOptions.themes[i],null)}}return c}function f(a){var b=a.mode,c=a.el,d=a.flags,e=a.engineSettings,f=d.dimensions,h=d.theme,i=f.width+"x"+f.height;if(b=null==b?d.fluid?"fluid":"image":b,null!=d.text&&(h.text=d.text,"object"===c.nodeName.toLowerCase())){for(var l=h.text.split("\\n"),m=0;m1){var t,u=0,v=0,x=0;p=new e.Group("line"+x),("left"===a.align||"right"===a.align)&&(r=a.width*(1-2*(1-D.vars.lineWrapRatio)));for(var y=0;y=r||A===!0)&&(b(m,p,u,m.properties.leading),m.add(p),u=0,v+=m.properties.leading,x+=1,p=new e.Group("line"+x),p.y=v),A!==!0&&(o.moveTo(u,0),u+=n.spaceWidth+z.width,p.add(o))}if(b(m,p,u,m.properties.leading),m.add(p),"left"===a.align)m.moveTo(a.width-q,null,null);else if("right"===a.align){for(t in m.children)p=m.children[t],p.moveTo(a.width-p.width,null,null);m.moveTo(0-(a.width-q),null,null)}else{for(t in m.children)p=m.children[t],p.moveTo((m.width-p.width)/2,null,null);m.moveTo((a.width-m.width)/2,null,null)}m.moveTo(null,(a.height-m.height)/2,null),(a.height-m.height)/2<0&&m.moveTo(null,0,null)}else o=new e.Text(a.text),p=new e.Group("line0"),p.add(o),m.add(p),"left"===a.align?m.moveTo(a.width-q,null,null):"right"===a.align?m.moveTo(0-(a.width-q),null,null):m.moveTo((a.width-n.boundingBox.width)/2,null,null),m.moveTo(null,(a.height-n.boundingBox.height)/2,null);return d}function i(a,b,c,d){var e=parseInt(a,10),f=parseInt(b,10),g=Math.max(e,f),h=Math.min(e,f),i=.8*Math.min(h,g*d);return Math.round(Math.max(c,i))}function j(a){var b;b=null==a||null==a.nodeType?D.vars.resizableImages:[a];for(var c=0,d=b.length;d>c;c++){var e=b[c];if(e.holderData){var f=e.holderData.flags,h=A(e);if(h){if(!e.holderData.resizeUpdate)continue;if(f.fluid&&f.auto){var i=e.holderData.fluidConfig;switch(i.mode){case"width":h.height=h.width/i.ratio;break;case"height":h.width=h.height*i.ratio}}var j={mode:"image",holderSettings:{dimensions:h,theme:f.theme,flags:f},el:e,engineSettings:e.holderData.engineSettings};"exact"==f.textmode&&(f.exactDimensions=h,j.holderSettings.dimensions=f.dimensions),g(j)}else n(e)}}}function k(a){if(a.holderData){var b=A(a);if(b){var c=a.holderData.flags,d={fluidHeight:"%"==c.dimensions.height.slice(-1),fluidWidth:"%"==c.dimensions.width.slice(-1),mode:null,initialDimensions:b};d.fluidWidth&&!d.fluidHeight?(d.mode="width",d.ratio=d.initialDimensions.width/parseFloat(c.dimensions.height)):!d.fluidWidth&&d.fluidHeight&&(d.mode="height",d.ratio=parseFloat(c.dimensions.width)/d.initialDimensions.height),a.holderData.fluidConfig=d}else n(a)}}function l(){var a,c=[],d=Object.keys(D.vars.invisibleImages);d.forEach(function(b){a=D.vars.invisibleImages[b],A(a)&&"img"==a.nodeName.toLowerCase()&&(c.push(a),delete D.vars.invisibleImages[b])}),c.length&&C.run({images:c}),setTimeout(function(){b.requestAnimationFrame(l)},10)}function m(){D.vars.visibilityCheckStarted||(b.requestAnimationFrame(l),D.vars.visibilityCheckStarted=!0)}function n(a){a.holderData.invisibleId||(D.vars.invisibleId+=1,D.vars.invisibleImages["i"+D.vars.invisibleId]=a,a.holderData.invisibleId=D.vars.invisibleId)}function o(a){D.vars.debounceTimer||a.call(this),D.vars.debounceTimer&&b.clearTimeout(D.vars.debounceTimer),D.vars.debounceTimer=b.setTimeout(function(){D.vars.debounceTimer=null,a.call(this)},D.setup.debounce)}function p(){o(function(){j(null)})}var q=c(2),r=c(3),s=c(4),t=c(5),u=c(6),v=c(7),w=c(8),x=c(9),y=c(10),z=t.extend,A=t.dimensionCheck,B=x.svg_ns,C={version:x.version,addTheme:function(a,b){return null!=a&&null!=b&&(D.settings.themes[a]=b),delete D.vars.cache.themeKeys,this},addImage:function(a,b){var c=v.getNodeArray(b);return c.forEach(function(b){var c=v.newEl("img"),d={};d[D.setup.dataAttr]=a,v.setAttr(c,d),b.appendChild(c)}),this},setResizeUpdate:function(a,b){a.holderData&&(a.holderData.resizeUpdate=!!b,a.holderData.resizeUpdate&&j(a))},run:function(a){a=a||{};var c={},g=z(D.settings,a);D.vars.preempted=!0,D.vars.dataAttr=g.dataAttr||D.setup.dataAttr,D.vars.lineWrapRatio=g.lineWrapRatio||D.setup.lineWrapRatio,c.renderer=g.renderer?g.renderer:D.setup.renderer,-1===D.setup.renderers.join(",").indexOf(c.renderer)&&(c.renderer=D.setup.supportsSVG?"svg":D.setup.supportsCanvas?"canvas":"html");var h=v.getNodeArray(g.images),i=v.getNodeArray(g.bgnodes),j=v.getNodeArray(g.stylenodes),k=v.getNodeArray(g.objects);return c.stylesheets=[],c.svgXMLStylesheet=!0,c.noFontFallback=g.noFontFallback?g.noFontFallback:!1,j.forEach(function(a){if(a.attributes.rel&&a.attributes.href&&"stylesheet"==a.attributes.rel.value){var b=a.attributes.href.value,d=v.newEl("a");d.href=b;var e=d.protocol+"//"+d.host+d.pathname+d.search;c.stylesheets.push(e)}}),i.forEach(function(a){if(b.getComputedStyle){var d=b.getComputedStyle(a,null).getPropertyValue("background-image"),h=a.getAttribute("data-background-src"),i=h||d,j=null,k=g.domain+"/",l=i.indexOf(k);if(0===l)j=i;else if(1===l&&"?"===i[0])j=i.slice(1);else{var m=i.substr(l).match(/([^\"]*)"?\)/);if(null!==m)j=m[1];else if(0===i.indexOf("url("))throw"Holder: unable to parse background URL: "+i}if(null!=j){var n=e(j,g);n&&f({mode:"background",el:a,flags:n,engineSettings:c})}}}),k.forEach(function(a){var b={};try{b.data=a.getAttribute("data"),b.dataSrc=a.getAttribute(D.vars.dataAttr)}catch(e){}var f=null!=b.data&&0===b.data.indexOf(g.domain),h=null!=b.dataSrc&&0===b.dataSrc.indexOf(g.domain);f?d(g,c,b.data,a):h&&d(g,c,b.dataSrc,a)}),h.forEach(function(a){var b={};try{b.src=a.getAttribute("src"),b.dataSrc=a.getAttribute(D.vars.dataAttr),b.rendered=a.getAttribute("data-holder-rendered")}catch(e){}var f=null!=b.src,h=null!=b.dataSrc&&0===b.dataSrc.indexOf(g.domain),i=null!=b.rendered&&"true"==b.rendered;f?0===b.src.indexOf(g.domain)?d(g,c,b.src,a):h&&(i?d(g,c,b.dataSrc,a):!function(a,b,c,e,f){t.imageExists(a,function(a){a||d(b,c,e,f)})}(b.src,g,c,b.dataSrc,a)):h&&d(g,c,b.dataSrc,a)}),this}},D={settings:{domain:"holder.js",images:"img",objects:"object",bgnodes:"body .holderjs",stylenodes:"head link.holderjs",themes:{gray:{background:"#EEEEEE",foreground:"#AAAAAA"},social:{background:"#3a5a97",foreground:"#FFFFFF"},industrial:{background:"#434A52",foreground:"#C2F200"},sky:{background:"#0D8FDB",foreground:"#FFFFFF"},vine:{background:"#39DBAC",foreground:"#1E292C"},lava:{background:"#F8591A",foreground:"#1C2846"}}},defaults:{size:10,units:"pt",scale:1/16}},E=function(){var a=null,b=null,c=null;return function(d){var e=d.root;if(D.setup.supportsSVG){var f=!1,g=function(a){return document.createTextNode(a)};(null==a||a.parentNode!==document.body)&&(f=!0),a=u.initSVG(a,e.properties.width,e.properties.height),a.style.display="block",f&&(b=v.newEl("text",B),c=g(null),v.setAttr(b,{x:0}),b.appendChild(c),a.appendChild(b),document.body.appendChild(a),a.style.visibility="hidden",a.style.position="absolute",a.style.top="-100%",a.style.left="-100%");var h=e.children.holderTextGroup,i=h.properties;v.setAttr(b,{y:i.font.size,style:t.cssProps({"font-weight":i.font.weight,"font-size":i.font.size+i.font.units,"font-family":i.font.family})}),c.nodeValue=i.text;var j=b.getBBox(),k=Math.ceil(j.width/(e.properties.width*D.vars.lineWrapRatio)),l=i.text.split(" "),m=i.text.match(/\\n/g);k+=null==m?0:m.length,c.nodeValue=i.text.replace(/[ ]+/g,"");var n=b.getComputedTextLength(),o=j.width-n,p=Math.round(o/Math.max(1,l.length-1)),q=[];if(k>1){c.nodeValue="";for(var r=0;r=0?b:1)}function f(a){v?e(a):w.push(a)}null==document.readyState&&document.addEventListener&&(document.addEventListener("DOMContentLoaded",function y(){document.removeEventListener("DOMContentLoaded",y,!1),document.readyState="complete"},!1),document.readyState="loading");var g=a.document,h=g.documentElement,i="load",j=!1,k="on"+i,l="complete",m="readyState",n="attachEvent",o="detachEvent",p="addEventListener",q="DOMContentLoaded",r="onreadystatechange",s="removeEventListener",t=p in g,u=j,v=j,w=[];if(g[m]===l)e(b);else if(t)g[p](q,c,j),a[p](i,c,j);else{g[n](r,c),a[n](k,c);try{u=null==a.frameElement&&h}catch(x){}u&&u.doScroll&&!function z(){if(!v){try{u.doScroll("left")}catch(a){return e(z,50)}d(),b()}}()}return f.version="1.4.0",f.isReady=function(){return v},f}a.exports="undefined"!=typeof window&&d(window)},function(a,b,c){var d=encodeURIComponent,e=decodeURIComponent,f=c(11),g=c(12),h=/(\w+)\[(\d+)\]/,i=/\w+\.\w+/;b.parse=function(a){if("string"!=typeof a)return{};if(a=f(a),""===a)return{};"?"===a.charAt(0)&&(a=a.slice(1));for(var b={},c=a.split("&"),d=0;d=0;d--)c=a.charCodeAt(d),b.unshift(c>128?["",c,";"].join(""):a[d]);return b.join("")},b.imageExists=function(a,b){var c=new Image;c.onerror=function(){b.call(this,!1)},c.onload=function(){b.call(this,!0)},c.src=a},b.decodeHtmlEntity=function(a){return a.replace(/(\d+);/g,function(a,b){return String.fromCharCode(b)})},b.dimensionCheck=function(a){var b={height:a.clientHeight,width:a.clientWidth};return b.height&&b.width?b:!1},b.truthy=function(a){return"string"==typeof a?"true"===a||"yes"===a||"1"===a||"on"===a||"✓"===a:!!a},b.parseColor=function(a){var b,c=/(^(?:#?)[0-9a-f]{6}$)|(^(?:#?)[0-9a-f]{3}$)/i,d=/^rgb\((\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*\)$/,e=/^rgba\((\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(0\.\d{1,}|1)\)$/,f=a.match(c);return null!==f?(b=f[1]||f[2],"#"!==b[0]?"#"+b:b):(f=a.match(d),null!==f?b="rgb("+f.slice(1).join(",")+")":(f=a.match(e),null!==f?b="rgba("+f.slice(1).join(",")+")":null))}},function(a,b,c){(function(a){var d=c(7),e="http://www.w3.org/2000/svg",f=8;b.initSVG=function(a,b,c){var g,h,i=!1;a&&a.querySelector?(h=a.querySelector("style"),null===h&&(i=!0)):(a=d.newEl("svg",e),i=!0),i&&(g=d.newEl("defs",e),h=d.newEl("style",e),d.setAttr(h,{type:"text/css"}),g.appendChild(h),a.appendChild(g)),a.webkitMatchesSelector&&a.setAttribute("xmlns",e);for(var j=0;j=0;i--){var j=h.createProcessingInstruction("xml-stylesheet",'href="'+g[i]+'" rel="stylesheet"');h.insertBefore(j,h.firstChild)}h.removeChild(h.documentElement),f=e.serializeToString(h)}var k=e.serializeToString(b);return k=k.replace(/\&(\#[0-9]{2,}\;)/g,"&$1"),f+k}}}).call(b,function(){return this}())},function(a,b,c){(function(a){b.newEl=function(b,c){return a.document?null==c?a.document.createElement(b):a.document.createElementNS(c,b):void 0},b.setAttr=function(a,b){for(var c in b)a.setAttribute(c,b[c])},b.createXML=function(){return a.DOMParser?(new DOMParser).parseFromString("","application/xml"):void 0},b.getNodeArray=function(b){var c=null;return"string"==typeof b?c=document.querySelectorAll(b):a.NodeList&&b instanceof a.NodeList?c=b:a.Node&&b instanceof a.Node?c=[b]:a.HTMLCollection&&b instanceof a.HTMLCollection?c=b:b instanceof Array?c=b:null===b&&(c=[]),c=Array.prototype.slice.call(c)}}).call(b,function(){return this}())},function(a,b,c){var d=function(a,b){"string"==typeof a&&(this.original=a,"#"===a.charAt(0)&&(a=a.slice(1)),/[^a-f0-9]+/i.test(a)||(3===a.length&&(a=a.replace(/./g,"$&$&")),6===a.length&&(this.alpha=1,b&&b.alpha&&(this.alpha=b.alpha),this.set(parseInt(a,16)))))};d.rgb2hex=function(a,b,c){function d(a){var b=(0|a).toString(16);return 16>a&&(b="0"+b),b}return[a,b,c].map(d).join("")},d.hsl2rgb=function(a,b,c){var d=a/60,e=(1-Math.abs(2*c-1))*b,f=e*(1-Math.abs(parseInt(d)%2-1)),g=c-e/2,h=0,i=0,j=0;return d>=0&&1>d?(h=e,i=f):d>=1&&2>d?(h=f,i=e):d>=2&&3>d?(i=e,j=f):d>=3&&4>d?(i=f,j=e):d>=4&&5>d?(h=f,j=e):d>=5&&6>d&&(h=e,j=f),h+=g,i+=g,j+=g,h=parseInt(255*h),i=parseInt(255*i),j=parseInt(255*j),[h,i,j]},d.prototype.set=function(a){this.raw=a;var b=(16711680&this.raw)>>16,c=(65280&this.raw)>>8,d=255&this.raw,e=.2126*b+.7152*c+.0722*d,f=-.09991*b-.33609*c+.436*d,g=.615*b-.55861*c-.05639*d;return this.rgb={r:b,g:c,b:d},this.yuv={y:e,u:f,v:g},this},d.prototype.lighten=function(a){var b=Math.min(1,Math.max(0,Math.abs(a)))*(0>a?-1:1),c=255*b|0,e=Math.min(255,Math.max(0,this.rgb.r+c)),f=Math.min(255,Math.max(0,this.rgb.g+c)),g=Math.min(255,Math.max(0,this.rgb.b+c)),h=d.rgb2hex(e,f,g);return new d(h)},d.prototype.toHex=function(a){return(a?"#":"")+this.raw.toString(16)},d.prototype.lighterThan=function(a){return a instanceof d||(a=new d(a)),this.yuv.y>a.yuv.y},d.prototype.blendAlpha=function(a){a instanceof d||(a=new d(a));var b=a,c=this,e=b.alpha*b.rgb.r+(1-b.alpha)*c.rgb.r,f=b.alpha*b.rgb.g+(1-b.alpha)*c.rgb.g,g=b.alpha*b.rgb.b+(1-b.alpha)*c.rgb.b;return new d(d.rgb2hex(e,f,g))},a.exports=d},function(a,b,c){a.exports={version:"2.8.2",svg_ns:"http://www.w3.org/2000/svg"}},function(a,b,c){(function(b){var d=c(6),e=c(7),f=c(5),g=c(9),h=g.svg_ns,i="\nCreated with Holder.js "+g.version+".\nLearn more at http://holderjs.com\n(c) 2012-2015 Ivan Malopinsky - http://imsky.co\n";a.exports=function(){if(b.XMLSerializer){var a=e.createXML(),c=d.initSVG(null,0,0),g=e.newEl("rect",h);return c.appendChild(g),function(b,j){var k=b.root;d.initSVG(c,k.properties.width,k.properties.height);for(var l=c.querySelectorAll("g"),m=0;m h1, .bd-content > h2, .bd-content > h3, .bd-content > h4, .bd-content > h5")}(); \ No newline at end of file diff --git a/docs/assets/js/ie-emulation-modes-warning.js b/docs/assets/js/ie-emulation-modes-warning.js new file mode 100644 index 000000000..2016da6d5 --- /dev/null +++ b/docs/assets/js/ie-emulation-modes-warning.js @@ -0,0 +1,51 @@ +// NOTICE!! DO NOT USE ANY OF THIS JAVASCRIPT +// IT'S JUST JUNK FOR OUR DOCS! +// ++++++++++++++++++++++++++++++++++++++++++ +/*! + * Copyright 2014-2015 Twitter, Inc. + * + * Licensed under the Creative Commons Attribution 3.0 Unported License. For + * details, see https://creativecommons.org/licenses/by/3.0/. + */ +// Intended to prevent false-positive bug reports about Bootstrap not working properly in old versions of IE due to folks testing using IE's unreliable emulation modes. +(function () { + 'use strict'; + + function emulatedIEMajorVersion() { + var groups = /MSIE ([0-9.]+)/.exec(window.navigator.userAgent) + if (groups === null) { + return null + } + var ieVersionNum = parseInt(groups[1], 10) + var ieMajorVersion = Math.floor(ieVersionNum) + return ieMajorVersion + } + + function actualNonEmulatedIEMajorVersion() { + // Detects the actual version of IE in use, even if it's in an older-IE emulation mode. + // IE JavaScript conditional compilation docs: https://msdn.microsoft.com/library/121hztk3%28v=vs.94%29.aspx + // @cc_on docs: https://msdn.microsoft.com/library/8ka90k2e%28v=vs.94%29.aspx + var jscriptVersion = new Function('/*@cc_on return @_jscript_version; @*/')() + if (jscriptVersion === undefined) { + return 11 // IE11+ not in emulation mode + } + if (jscriptVersion < 9) { + return 8 // IE8 (or lower; haven't tested on IE<8) + } + return jscriptVersion // IE9 or IE10 in any mode, or IE11 in non-IE11 mode + } + + var ua = window.navigator.userAgent + if (ua.indexOf('Opera') > -1 || ua.indexOf('Presto') > -1) { + return // Opera, which might pretend to be IE + } + var emulated = emulatedIEMajorVersion() + if (emulated === null) { + return // Not IE + } + var nonEmulated = actualNonEmulatedIEMajorVersion() + + if (emulated !== nonEmulated) { + window.alert('WARNING: You appear to be using IE' + nonEmulated + ' in IE' + emulated + ' emulation mode.\nIE emulation modes can behave significantly differently from ACTUAL older versions of IE.\nPLEASE DON\'T FILE BOOTSTRAP BUGS based on testing in IE emulation modes!') + } +})(); diff --git a/docs/assets/js/ie10-viewport-bug-workaround.js b/docs/assets/js/ie10-viewport-bug-workaround.js new file mode 100644 index 000000000..162dafb9d --- /dev/null +++ b/docs/assets/js/ie10-viewport-bug-workaround.js @@ -0,0 +1,23 @@ +/*! + * IE10 viewport hack for Surface/desktop Windows 8 bug + * Copyright 2014-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ + +// See the Getting Started docs for more information: +// http://getbootstrap.com/getting-started/#support-ie10-width + +(function () { + 'use strict'; + + if (navigator.userAgent.match(/IEMobile\/10\.0/)) { + var msViewportStyle = document.createElement('style') + msViewportStyle.appendChild( + document.createTextNode( + '@-ms-viewport{width:auto!important}' + ) + ) + document.head.appendChild(msViewportStyle) + } + +})(); diff --git a/docs/assets/js/src/application.js b/docs/assets/js/src/application.js new file mode 100644 index 000000000..1fec20079 --- /dev/null +++ b/docs/assets/js/src/application.js @@ -0,0 +1,83 @@ +// NOTICE!! DO NOT USE ANY OF THIS JAVASCRIPT +// IT'S ALL JUST JUNK FOR OUR DOCS! +// ++++++++++++++++++++++++++++++++++++++++++ + +/*! + * JavaScript for Bootstrap's docs (http://getbootstrap.com) + * Copyright 2011-2015 Twitter, Inc. + * Licensed under the Creative Commons Attribution 3.0 Unported License. For + * details, see https://creativecommons.org/licenses/by/3.0/. + */ + +/* global Clipboard, anchors */ + +!function ($) { + 'use strict'; + + $(function () { + + // Tooltip and popover demos + $('.tooltip-demo').tooltip({ + selector: '[data-toggle="tooltip"]', + container: 'body' + }) + + $('[data-toggle="popover"]').popover() + + // Demos within modals + $('.tooltip-test').tooltip() + $('.popover-test').popover() + + // Indeterminate checkbox example + $('.bd-example-indeterminate [type="checkbox"]').prop('indeterminate', true) + + // Disable empty links in docs examples + $('.bd-example [href=#]').click(function (e) { + e.preventDefault() + }) + + // Insert copy to clipboard button before .highlight + $('.highlight').each(function () { + var btnHtml = 'Copy' + $(this).before(btnHtml) + $('.btn-clipboard').tooltip() + }) + + var clipboard = new Clipboard('.btn-clipboard', { + target: function (trigger) { + return trigger.parentNode.nextElementSibling + } + }) + + clipboard.on('success', function (e) { + $(e.trigger) + .attr('title', 'Copied!') + .tooltip('_fixTitle') + .tooltip('show') + .attr('title', 'Copy to clipboard') + .tooltip('_fixTitle') + + e.clearSelection() + }) + + clipboard.on('error', function (e) { + var fallbackMsg = /Mac/i.test(navigator.userAgent) ? 'Press \u2318 to copy' : 'Press Ctrl-C to copy' + + $(e.trigger) + .attr('title', fallbackMsg) + .tooltip('_fixTitle') + .tooltip('show') + .attr('title', 'Copy to clipboard') + .tooltip('_fixTitle') + }) + + }) + +}(jQuery) + +;(function () { + 'use strict'; + + anchors.options.placement = 'left'; + anchors.add('.bd-content > h1, .bd-content > h2, .bd-content > h3, .bd-content > h4, .bd-content > h5') +})(); diff --git a/docs/assets/js/vendor/anchor.min.js b/docs/assets/js/vendor/anchor.min.js new file mode 100644 index 000000000..e739e2dcc --- /dev/null +++ b/docs/assets/js/vendor/anchor.min.js @@ -0,0 +1,6 @@ +/*! + * AnchorJS - v2.0.0 - 2015-10-31 + * https://github.com/bryanbraun/anchorjs + * Copyright (c) 2015 Bryan Braun; Licensed MIT + */ +function AnchorJS(A){"use strict";function t(A){o.options.icon=o.options.hasOwnProperty("icon")?A.icon:"",o.options.visible=o.options.hasOwnProperty("visible")?A.visible:"hover",o.options.placement=o.options.hasOwnProperty("placement")?A.placement:"right",o.options.class=o.options.hasOwnProperty("class")?A.class:"",o.options.truncate=o.options.hasOwnProperty("truncate")?Math.floor(A.truncate):64}function e(){if(null===document.head.querySelector("style.anchorjs")){var A,t=document.createElement("style"),e=" .anchorjs-link { opacity: 0; text-decoration: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }",o=" *:hover > .anchorjs-link, .anchorjs-link:focus { opacity: 1; }",n=' @font-face { font-family: "anchorjs-icons"; font-style: normal; font-weight: normal; src: url(data:application/x-font-ttf;charset=utf-8;base64,AAEAAAALAIAAAwAwT1MvMg8SBTUAAAC8AAAAYGNtYXAWi9QdAAABHAAAAFRnYXNwAAAAEAAAAXAAAAAIZ2x5Zgq29TcAAAF4AAABNGhlYWQEZM3pAAACrAAAADZoaGVhBhUDxgAAAuQAAAAkaG10eASAADEAAAMIAAAAFGxvY2EAKACuAAADHAAAAAxtYXhwAAgAVwAAAygAAAAgbmFtZQ5yJ3cAAANIAAAB2nBvc3QAAwAAAAAFJAAAACAAAwJAAZAABQAAApkCzAAAAI8CmQLMAAAB6wAzAQkAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAABAAADpywPA/8AAQAPAAEAAAAABAAAAAAAAAAAAAAAgAAAAAAADAAAAAwAAABwAAQADAAAAHAADAAEAAAAcAAQAOAAAAAoACAACAAIAAQAg6cv//f//AAAAAAAg6cv//f//AAH/4xY5AAMAAQAAAAAAAAAAAAAAAQAB//8ADwABAAAAAAAAAAAAAgAANzkBAAAAAAEAAAAAAAAAAAACAAA3OQEAAAAAAQAAAAAAAAAAAAIAADc5AQAAAAACADEARAJTAsAAKwBUAAABIiYnJjQ/AT4BMzIWFxYUDwEGIicmND8BNjQnLgEjIgYPAQYUFxYUBw4BIwciJicmND8BNjIXFhQPAQYUFx4BMzI2PwE2NCcmNDc2MhcWFA8BDgEjARQGDAUtLXoWOR8fORYtLTgKGwoKCjgaGg0gEhIgDXoaGgkJBQwHdR85Fi0tOAobCgoKOBoaDSASEiANehoaCQkKGwotLXoWOR8BMwUFLYEuehYXFxYugC44CQkKGwo4GkoaDQ0NDXoaShoKGwoFBe8XFi6ALjgJCQobCjgaShoNDQ0NehpKGgobCgoKLYEuehYXAAEAAAABAACiToc1Xw889QALBAAAAAAA0XnFFgAAAADRecUWAAAAAAJTAsAAAAAIAAIAAAAAAAAAAQAAA8D/wAAABAAAAAAAAlMAAQAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAACAAAAAoAAMQAAAAAACgAUAB4AmgABAAAABQBVAAIAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAADgCuAAEAAAAAAAEADgAAAAEAAAAAAAIABwCfAAEAAAAAAAMADgBLAAEAAAAAAAQADgC0AAEAAAAAAAUACwAqAAEAAAAAAAYADgB1AAEAAAAAAAoAGgDeAAMAAQQJAAEAHAAOAAMAAQQJAAIADgCmAAMAAQQJAAMAHABZAAMAAQQJAAQAHADCAAMAAQQJAAUAFgA1AAMAAQQJAAYAHACDAAMAAQQJAAoANAD4YW5jaG9yanMtaWNvbnMAYQBuAGMAaABvAHIAagBzAC0AaQBjAG8AbgBzVmVyc2lvbiAxLjAAVgBlAHIAcwBpAG8AbgAgADEALgAwYW5jaG9yanMtaWNvbnMAYQBuAGMAaABvAHIAagBzAC0AaQBjAG8AbgBzYW5jaG9yanMtaWNvbnMAYQBuAGMAaABvAHIAagBzAC0AaQBjAG8AbgBzUmVndWxhcgBSAGUAZwB1AGwAYQByYW5jaG9yanMtaWNvbnMAYQBuAGMAaABvAHIAagBzAC0AaQBjAG8AbgBzRm9udCBnZW5lcmF0ZWQgYnkgSWNvTW9vbi4ARgBvAG4AdAAgAGcAZQBuAGUAcgBhAHQAZQBkACAAYgB5ACAASQBjAG8ATQBvAG8AbgAuAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==) format("truetype"); }',i=" [data-anchorjs-icon]::after { content: attr(data-anchorjs-icon); }";t.className="anchorjs",t.appendChild(document.createTextNode("")),A=document.head.querySelector('[rel="stylesheet"], style'),void 0===A?document.head.appendChild(t):document.head.insertBefore(t,A),t.sheet.insertRule(e,t.sheet.cssRules.length),t.sheet.insertRule(o,t.sheet.cssRules.length),t.sheet.insertRule(i,t.sheet.cssRules.length),t.sheet.insertRule(n,t.sheet.cssRules.length)}}var o=this;this.options=A||{},t(A),this.add=function(A){var o,n,i,s,a,r,l,c,h,g,B,u;if(t(this.options),A){if("string"!=typeof A)throw new Error("The selector provided to AnchorJS was invalid.")}else A="h1, h2, h3, h4, h5, h6";if(o=document.querySelectorAll(A),0===o.length)return!1;for(e(),n=document.querySelectorAll("[id]"),i=[].map.call(n,function(A){return A.id}),a=0;ar;r++)n[r].fn.apply(n[r].ctx,e);return this},off:function(t,e){var n=this.e||(this.e={}),r=n[t],o=[];if(r&&e)for(var i=0,a=r.length;a>i;i++)r[i].fn!==e&&r[i].fn._!==e&&o.push(r[i]);return o.length?n[t]=o:delete n[t],this}},e.exports=r},{}],8:[function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}n.__esModule=!0;var i=function(){function t(t,e){for(var n=0;n>>0;if("function"!=typeof e)throw TypeError();var r,i=arguments[1];for(r=0;n>r;r++)r in t&&e.call(i,t[r],r,t)}),function(e){var t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";e.atob=e.atob||function(e){e=String(e);var n,r=0,i=[],o=0,a=0;if(e=e.replace(/\s/g,""),e.length%4===0&&(e=e.replace(/=+$/,"")),e.length%4===1)throw Error("InvalidCharacterError");if(/[^+/0-9A-Za-z]/.test(e))throw Error("InvalidCharacterError");for(;r>16&255)),i.push(String.fromCharCode(o>>8&255)),i.push(String.fromCharCode(255&o)),a=0,o=0),r+=1;return 12===a?(o>>=4,i.push(String.fromCharCode(255&o))):18===a&&(o>>=2,i.push(String.fromCharCode(o>>8&255)),i.push(String.fromCharCode(255&o))),i.join("")},e.btoa=e.btoa||function(e){e=String(e);var n,r,i,o,a,s,l,d=0,h=[];if(/[^\x00-\xFF]/.test(e))throw Error("InvalidCharacterError");for(;d>2,a=(3&n)<<4|r>>4,s=(15&r)<<2|i>>6,l=63&i,d===e.length+2?(s=64,l=64):d===e.length+1&&(l=64),h.push(t.charAt(o),t.charAt(a),t.charAt(s),t.charAt(l));return h.join("")}}(e),Object.prototype.hasOwnProperty||(Object.prototype.hasOwnProperty=function(e){var t=this.__proto__||this.constructor.prototype;return e in this&&(!(e in t)||t[e]!==this[e])}),function(){if("performance"in e==!1&&(e.performance={}),Date.now=Date.now||function(){return(new Date).getTime()},"now"in e.performance==!1){var t=Date.now();performance.timing&&performance.timing.navigationStart&&(t=performance.timing.navigationStart),e.performance.now=function(){return Date.now()-t}}}(),e.requestAnimationFrame||(e.webkitRequestAnimationFrame?!function(e){e.requestAnimationFrame=function(t){return webkitRequestAnimationFrame(function(){t(e.performance.now())})},e.cancelAnimationFrame=webkitCancelAnimationFrame}(e):e.mozRequestAnimationFrame?!function(e){e.requestAnimationFrame=function(t){return mozRequestAnimationFrame(function(){t(e.performance.now())})},e.cancelAnimationFrame=mozCancelAnimationFrame}(e):!function(e){e.requestAnimationFrame=function(t){return e.setTimeout(t,1e3/60)},e.cancelAnimationFrame=e.clearTimeout}(e))}}(this),function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):"object"==typeof exports?exports.Holder=t():e.Holder=t()}(this,function(){return function(e){function t(r){if(n[r])return n[r].exports;var i=n[r]={exports:{},id:r,loaded:!1};return e[r].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){e.exports=n(1)},function(e,t,n){(function(t){function r(e,t,n,r){var a=i(n.substr(n.lastIndexOf(e.domain)),e);a&&o({mode:null,el:r,flags:a,engineSettings:t})}function i(e,t){var n={theme:k(M.settings.themes.gray,null),stylesheets:t.stylesheets,instanceOptions:t},r=e.split("?"),i=r[0].split("/");n.holderURL=e;var o=i[1],a=o.match(/([\d]+p?)x([\d]+p?)/);if(!a)return!1;if(n.fluid=-1!==o.indexOf("p"),n.dimensions={width:a[1].replace("p","%"),height:a[2].replace("p","%")},2===r.length){var s=v.parse(r[1]);if(s.bg&&(n.theme.background=w.parseColor(s.bg)),s.fg&&(n.theme.foreground=w.parseColor(s.fg)),s.bg&&!s.fg&&(n.autoFg=!0),s.theme&&n.instanceOptions.themes.hasOwnProperty(s.theme)&&(n.theme=k(n.instanceOptions.themes[s.theme],null)),s.text&&(n.text=s.text),s.textmode&&(n.textmode=s.textmode),s.size&&(n.size=s.size),s.font&&(n.font=s.font),s.align&&(n.align=s.align),n.nowrap=w.truthy(s.nowrap),n.auto=w.truthy(s.auto),n.outline=w.truthy(s.outline),w.truthy(s.random)){M.vars.cache.themeKeys=M.vars.cache.themeKeys||Object.keys(n.instanceOptions.themes);var l=M.vars.cache.themeKeys[0|Math.random()*M.vars.cache.themeKeys.length];n.theme=k(n.instanceOptions.themes[l],null)}}return n}function o(e){var t=e.mode,n=e.el,r=e.flags,i=e.engineSettings,o=r.dimensions,s=r.theme,l=o.width+"x"+o.height;if(t=null==t?r.fluid?"fluid":"image":t,null!=r.text&&(s.text=r.text,"object"===n.nodeName.toLowerCase())){for(var u=s.text.split("\\n"),c=0;c1){var w,b=0,x=0,A=0;g=new i.Group("line"+A),("left"===e.align||"right"===e.align)&&(v=e.width*(1-2*(1-M.vars.lineWrapRatio)));for(var C=0;C=v||E===!0)&&(t(c,g,b,c.properties.leading),c.add(g),b=0,x+=c.properties.leading,A+=1,g=new i.Group("line"+A),g.y=x),E!==!0&&(p.moveTo(b,0),b+=f.spaceWidth+k.width,g.add(p))}if(t(c,g,b,c.properties.leading),c.add(g),"left"===e.align)c.moveTo(e.width-m,null,null);else if("right"===e.align){for(w in c.children)g=c.children[w],g.moveTo(e.width-g.width,null,null);c.moveTo(0-(e.width-m),null,null)}else{for(w in c.children)g=c.children[w],g.moveTo((c.width-g.width)/2,null,null);c.moveTo((e.width-c.width)/2,null,null)}c.moveTo(null,(e.height-c.height)/2,null),(e.height-c.height)/2<0&&c.moveTo(null,0,null)}else p=new i.Text(e.text),g=new i.Group("line0"),g.add(p),c.add(g),"left"===e.align?c.moveTo(e.width-m,null,null):"right"===e.align?c.moveTo(0-(e.width-m),null,null):c.moveTo((e.width-f.boundingBox.width)/2,null,null),c.moveTo(null,(e.height-f.boundingBox.height)/2,null);return r}function l(e,t,n,r){var i=parseInt(e,10),o=parseInt(t,10),a=Math.max(i,o),s=Math.min(i,o),l=.8*Math.min(s,a*r);return Math.round(Math.max(n,l))}function d(e){var t;t=null==e||null==e.nodeType?M.vars.resizableImages:[e];for(var n=0,r=t.length;r>n;n++){var i=t[n];if(i.holderData){var o=i.holderData.flags,s=E(i);if(s){if(!i.holderData.resizeUpdate)continue;if(o.fluid&&o.auto){var l=i.holderData.fluidConfig;switch(l.mode){case"width":s.height=s.width/l.ratio;break;case"height":s.width=s.height*l.ratio}}var d={mode:"image",holderSettings:{dimensions:s,theme:o.theme,flags:o},el:i,engineSettings:i.holderData.engineSettings};"exact"==o.textmode&&(o.exactDimensions=s,d.holderSettings.dimensions=o.dimensions),a(d)}else f(i)}}}function h(e){if(e.holderData){var t=E(e);if(t){var n=e.holderData.flags,r={fluidHeight:"%"==n.dimensions.height.slice(-1),fluidWidth:"%"==n.dimensions.width.slice(-1),mode:null,initialDimensions:t};r.fluidWidth&&!r.fluidHeight?(r.mode="width",r.ratio=r.initialDimensions.width/parseFloat(n.dimensions.height)):!r.fluidWidth&&r.fluidHeight&&(r.mode="height",r.ratio=parseFloat(n.dimensions.width)/r.initialDimensions.height),e.holderData.fluidConfig=r}else f(e)}}function u(){var e,n=[],r=Object.keys(M.vars.invisibleImages);r.forEach(function(t){e=M.vars.invisibleImages[t],E(e)&&"img"==e.nodeName.toLowerCase()&&(n.push(e),delete M.vars.invisibleImages[t])}),n.length&&F.run({images:n}),setTimeout(function(){t.requestAnimationFrame(u)},10)}function c(){M.vars.visibilityCheckStarted||(t.requestAnimationFrame(u),M.vars.visibilityCheckStarted=!0)}function f(e){e.holderData.invisibleId||(M.vars.invisibleId+=1,M.vars.invisibleImages["i"+M.vars.invisibleId]=e,e.holderData.invisibleId=M.vars.invisibleId)}function p(e){M.vars.debounceTimer||e.call(this),M.vars.debounceTimer&&t.clearTimeout(M.vars.debounceTimer),M.vars.debounceTimer=t.setTimeout(function(){M.vars.debounceTimer=null,e.call(this)},M.setup.debounce)}function g(){p(function(){d(null)})}var m=n(2),v=n(3),y=n(4),w=n(5),b=n(6),x=n(7),S=n(8),A=n(9),C=n(10),k=w.extend,E=w.dimensionCheck,T=A.svg_ns,F={version:A.version,addTheme:function(e,t){return null!=e&&null!=t&&(M.settings.themes[e]=t),delete M.vars.cache.themeKeys,this},addImage:function(e,t){var n=x.getNodeArray(t);return n.forEach(function(t){var n=x.newEl("img"),r={};r[M.setup.dataAttr]=e,x.setAttr(n,r),t.appendChild(n)}),this},setResizeUpdate:function(e,t){e.holderData&&(e.holderData.resizeUpdate=!!t,e.holderData.resizeUpdate&&d(e))},run:function(e){e=e||{};var n={},a=k(M.settings,e);M.vars.preempted=!0,M.vars.dataAttr=a.dataAttr||M.setup.dataAttr,M.vars.lineWrapRatio=a.lineWrapRatio||M.setup.lineWrapRatio,n.renderer=a.renderer?a.renderer:M.setup.renderer,-1===M.setup.renderers.join(",").indexOf(n.renderer)&&(n.renderer=M.setup.supportsSVG?"svg":M.setup.supportsCanvas?"canvas":"html");var s=x.getNodeArray(a.images),l=x.getNodeArray(a.bgnodes),d=x.getNodeArray(a.stylenodes),h=x.getNodeArray(a.objects);return n.stylesheets=[],n.svgXMLStylesheet=!0,n.noFontFallback=a.noFontFallback?a.noFontFallback:!1,d.forEach(function(e){if(e.attributes.rel&&e.attributes.href&&"stylesheet"==e.attributes.rel.value){var t=e.attributes.href.value,r=x.newEl("a");r.href=t;var i=r.protocol+"//"+r.host+r.pathname+r.search;n.stylesheets.push(i)}}),l.forEach(function(e){if(t.getComputedStyle){var r=t.getComputedStyle(e,null).getPropertyValue("background-image"),s=e.getAttribute("data-background-src"),l=s||r,d=null,h=a.domain+"/",u=l.indexOf(h);if(0===u)d=l;else if(1===u&&"?"===l[0])d=l.slice(1);else{var c=l.substr(u).match(/([^\"]*)"?\)/);if(null!==c)d=c[1];else if(0===l.indexOf("url("))throw"Holder: unable to parse background URL: "+l}if(null!=d){var f=i(d,a);f&&o({mode:"background",el:e,flags:f,engineSettings:n})}}}),h.forEach(function(e){var t={};try{t.data=e.getAttribute("data"),t.dataSrc=e.getAttribute(M.vars.dataAttr)}catch(i){}var o=null!=t.data&&0===t.data.indexOf(a.domain),s=null!=t.dataSrc&&0===t.dataSrc.indexOf(a.domain);o?r(a,n,t.data,e):s&&r(a,n,t.dataSrc,e)}),s.forEach(function(e){var t={};try{t.src=e.getAttribute("src"),t.dataSrc=e.getAttribute(M.vars.dataAttr),t.rendered=e.getAttribute("data-holder-rendered")}catch(i){}var o=null!=t.src,s=null!=t.dataSrc&&0===t.dataSrc.indexOf(a.domain),l=null!=t.rendered&&"true"==t.rendered;o?0===t.src.indexOf(a.domain)?r(a,n,t.src,e):s&&(l?r(a,n,t.dataSrc,e):!function(e,t,n,i,o){w.imageExists(e,function(e){e||r(t,n,i,o)})}(t.src,a,n,t.dataSrc,e)):s&&r(a,n,t.dataSrc,e)}),this}},M={settings:{domain:"holder.js",images:"img",objects:"object",bgnodes:"body .holderjs",stylenodes:"head link.holderjs",themes:{gray:{background:"#EEEEEE",foreground:"#AAAAAA"},social:{background:"#3a5a97",foreground:"#FFFFFF"},industrial:{background:"#434A52",foreground:"#C2F200"},sky:{background:"#0D8FDB",foreground:"#FFFFFF"},vine:{background:"#39DBAC",foreground:"#1E292C"},lava:{background:"#F8591A",foreground:"#1C2846"}}},defaults:{size:10,units:"pt",scale:1/16}},j=function(){var e=null,t=null,n=null;return function(r){var i=r.root;if(M.setup.supportsSVG){var o=!1,a=function(e){return document.createTextNode(e)};(null==e||e.parentNode!==document.body)&&(o=!0),e=b.initSVG(e,i.properties.width,i.properties.height),e.style.display="block",o&&(t=x.newEl("text",T),n=a(null),x.setAttr(t,{x:0}),t.appendChild(n),e.appendChild(t),document.body.appendChild(e),e.style.visibility="hidden",e.style.position="absolute",e.style.top="-100%",e.style.left="-100%");var s=i.children.holderTextGroup,l=s.properties;x.setAttr(t,{y:l.font.size,style:w.cssProps({"font-weight":l.font.weight,"font-size":l.font.size+l.font.units,"font-family":l.font.family})}),n.nodeValue=l.text;var d=t.getBBox(),h=Math.ceil(d.width/(i.properties.width*M.vars.lineWrapRatio)),u=l.text.split(" "),c=l.text.match(/\\n/g);h+=null==c?0:c.length,n.nodeValue=l.text.replace(/[ ]+/g,"");var f=t.getComputedTextLength(),p=d.width-f,g=Math.round(p/Math.max(1,u.length-1)),m=[];if(h>1){n.nodeValue="";for(var v=0;v=0?t:1)}function o(e){x?i(e):S.push(e)}null==document.readyState&&document.addEventListener&&(document.addEventListener("DOMContentLoaded",function C(){document.removeEventListener("DOMContentLoaded",C,!1),document.readyState="complete"},!1),document.readyState="loading");var a=e.document,s=a.documentElement,l="load",d=!1,h="on"+l,u="complete",c="readyState",f="attachEvent",p="detachEvent",g="addEventListener",m="DOMContentLoaded",v="onreadystatechange",y="removeEventListener",w=g in a,b=d,x=d,S=[];if(a[c]===u)i(t);else if(w)a[g](m,n,d),e[g](l,n,d);else{a[f](v,n),e[f](h,n);try{b=null==e.frameElement&&s}catch(A){}b&&b.doScroll&&!function k(){if(!x){try{b.doScroll("left")}catch(e){return i(k,50)}r(),t()}}()}return o.version="1.4.0",o.isReady=function(){return x},o}e.exports="undefined"!=typeof window&&r(window)},function(e,t,n){var r=encodeURIComponent,i=decodeURIComponent,o=n(11),a=n(12),s=/(\w+)\[(\d+)\]/,l=/\w+\.\w+/;t.parse=function(e){if("string"!=typeof e)return{};if(e=o(e),""===e)return{};"?"===e.charAt(0)&&(e=e.slice(1));for(var t={},n=e.split("&"),r=0;r=0;r--)n=e.charCodeAt(r),t.unshift(n>128?["",n,";"].join(""):e[r]);return t.join("")},t.imageExists=function(e,t){var n=new Image;n.onerror=function(){t.call(this,!1)},n.onload=function(){t.call(this,!0)},n.src=e},t.decodeHtmlEntity=function(e){return e.replace(/(\d+);/g,function(e,t){return String.fromCharCode(t)})},t.dimensionCheck=function(e){var t={height:e.clientHeight,width:e.clientWidth};return t.height&&t.width?t:!1},t.truthy=function(e){return"string"==typeof e?"true"===e||"yes"===e||"1"===e||"on"===e||"✓"===e:!!e},t.parseColor=function(e){var t,n=/(^(?:#?)[0-9a-f]{6}$)|(^(?:#?)[0-9a-f]{3}$)/i,r=/^rgb\((\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*\)$/,i=/^rgba\((\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(0\.\d{1,}|1)\)$/,o=e.match(n);return null!==o?(t=o[1]||o[2],"#"!==t[0]?"#"+t:t):(o=e.match(r),null!==o?t="rgb("+o.slice(1).join(",")+")":(o=e.match(i),null!==o?t="rgba("+o.slice(1).join(",")+")":null))}},function(e,t,n){(function(e){var r=n(7),i="http://www.w3.org/2000/svg",o=8;t.initSVG=function(e,t,n){var a,s,l=!1;e&&e.querySelector?(s=e.querySelector("style"),null===s&&(l=!0)):(e=r.newEl("svg",i),l=!0),l&&(a=r.newEl("defs",i),s=r.newEl("style",i),r.setAttr(s,{type:"text/css"}),a.appendChild(s),e.appendChild(a)),e.webkitMatchesSelector&&e.setAttribute("xmlns",i);for(var d=0;d=0;l--){var d=s.createProcessingInstruction("xml-stylesheet",'href="'+a[l]+'" rel="stylesheet"');s.insertBefore(d,s.firstChild)}s.removeChild(s.documentElement),o=i.serializeToString(s)}var h=i.serializeToString(t);return h=h.replace(/\&(\#[0-9]{2,}\;)/g,"&$1"),o+h}}}).call(t,function(){return this}())},function(e,t,n){(function(e){t.newEl=function(t,n){return e.document?null==n?e.document.createElement(t):e.document.createElementNS(n,t):void 0},t.setAttr=function(e,t){for(var n in t)e.setAttribute(n,t[n])},t.createXML=function(){return e.DOMParser?(new DOMParser).parseFromString("","application/xml"):void 0},t.getNodeArray=function(t){var n=null;return"string"==typeof t?n=document.querySelectorAll(t):e.NodeList&&t instanceof e.NodeList?n=t:e.Node&&t instanceof e.Node?n=[t]:e.HTMLCollection&&t instanceof e.HTMLCollection?n=t:t instanceof Array?n=t:null===t&&(n=[]),n=Array.prototype.slice.call(n)}}).call(t,function(){return this}())},function(e,t,n){var r=function(e,t){"string"==typeof e&&(this.original=e,"#"===e.charAt(0)&&(e=e.slice(1)),/[^a-f0-9]+/i.test(e)||(3===e.length&&(e=e.replace(/./g,"$&$&")),6===e.length&&(this.alpha=1,t&&t.alpha&&(this.alpha=t.alpha),this.set(parseInt(e,16)))))};r.rgb2hex=function(e,t,n){function r(e){var t=(0|e).toString(16);return 16>e&&(t="0"+t),t}return[e,t,n].map(r).join("")},r.hsl2rgb=function(e,t,n){var r=e/60,i=(1-Math.abs(2*n-1))*t,o=i*(1-Math.abs(parseInt(r)%2-1)),a=n-i/2,s=0,l=0,d=0;return r>=0&&1>r?(s=i,l=o):r>=1&&2>r?(s=o,l=i):r>=2&&3>r?(l=i,d=o):r>=3&&4>r?(l=o,d=i):r>=4&&5>r?(s=o,d=i):r>=5&&6>r&&(s=i,d=o),s+=a,l+=a,d+=a,s=parseInt(255*s),l=parseInt(255*l),d=parseInt(255*d),[s,l,d]},r.prototype.set=function(e){this.raw=e;var t=(16711680&this.raw)>>16,n=(65280&this.raw)>>8,r=255&this.raw,i=.2126*t+.7152*n+.0722*r,o=-.09991*t-.33609*n+.436*r,a=.615*t-.55861*n-.05639*r;return this.rgb={r:t,g:n,b:r},this.yuv={y:i,u:o,v:a},this},r.prototype.lighten=function(e){var t=Math.min(1,Math.max(0,Math.abs(e)))*(0>e?-1:1),n=255*t|0,i=Math.min(255,Math.max(0,this.rgb.r+n)),o=Math.min(255,Math.max(0,this.rgb.g+n)),a=Math.min(255,Math.max(0,this.rgb.b+n)),s=r.rgb2hex(i,o,a);return new r(s)},r.prototype.toHex=function(e){return(e?"#":"")+this.raw.toString(16)},r.prototype.lighterThan=function(e){return e instanceof r||(e=new r(e)),this.yuv.y>e.yuv.y},r.prototype.blendAlpha=function(e){e instanceof r||(e=new r(e));var t=e,n=this,i=t.alpha*t.rgb.r+(1-t.alpha)*n.rgb.r,o=t.alpha*t.rgb.g+(1-t.alpha)*n.rgb.g,a=t.alpha*t.rgb.b+(1-t.alpha)*n.rgb.b;return new r(r.rgb2hex(i,o,a))},e.exports=r},function(e,t,n){e.exports={version:"2.8.2",svg_ns:"http://www.w3.org/2000/svg"}},function(e,t,n){(function(t){var r=n(6),i=n(7),o=n(5),a=n(9),s=a.svg_ns,l="\nCreated with Holder.js "+a.version+".\nLearn more at http://holderjs.com\n(c) 2012-2015 Ivan Malopinsky - http://imsky.co\n";e.exports=function(){if(t.XMLSerializer){var e=i.createXML(),n=r.initSVG(null,0,0),a=i.newEl("rect",s);return n.appendChild(a),function(t,d){var h=t.root;r.initSVG(n,h.properties.width,h.properties.height);for(var u=n.querySelectorAll("g"),c=0;c=0}this.matches=function(string,crit){return"string"!=typeof string?!1:(string=string.trim(),matchesString(string,crit))}}module.exports=new LiteralSearchStrategy},{}],6:[function(require,module,exports){"use strict";function setOptions(_options){options.pattern=_options.pattern||options.pattern,options.template=_options.template||options.template,"function"==typeof _options.middleware&&(options.middleware=_options.middleware)}function compile(data){return options.template.replace(options.pattern,function(match,prop){var value=options.middleware(prop,data[prop],options.template);return void 0!==value?value:data[prop]||match})}module.exports={compile:compile,setOptions:setOptions};var options={};options.pattern=/\{(.*?)\}/g,options.template="",options.middleware=function(){}},{}],7:[function(require,module,exports){!function(window,document,undefined){"use strict";function initWithJSON(json){repository.put(json),registerInput()}function initWithURL(url){jsonLoader.load(url,function(err,json){err&&throwError("failed to get JSON ("+url+")"),initWithJSON(json)})}function emptyResultsContainer(){options.resultsContainer.innerHTML=""}function appendToResultsContainer(text){options.resultsContainer.innerHTML+=text}function registerInput(){options.searchInput.addEventListener("keyup",function(e){emptyResultsContainer(),e.target.value.length>0&&render(repository.search(e.target.value))})}function render(results){if(0===results.length)return appendToResultsContainer(options.noResultsText);for(var i=0;i{title}',templateMiddleware:function(){},noResultsText:"No results found",limit:10,fuzzy:!1,exclude:[]},requiredOptions=["searchInput","resultsContainer","json"],templater=require("./Templater"),repository=require("./Repository"),jsonLoader=require("./JSONLoader"),optionsValidator=require("./OptionsValidator")({required:requiredOptions}),utils=require("./utils");window.SimpleJekyllSearch=function(_options){var errors=optionsValidator.validate(_options);errors.length>0&&throwError("You must specify the following required options: "+requiredOptions),options=utils.merge(options,_options),templater.setOptions({template:options.searchResultTemplate,middleware:options.templateMiddleware}),repository.setOptions({fuzzy:options.fuzzy,limit:options.limit}),utils.isJSON(options.json)?initWithJSON(options.json):initWithURL(options.json)},window.SimpleJekyllSearch.init=window.SimpleJekyllSearch}(window,document)},{"./JSONLoader":1,"./OptionsValidator":2,"./Repository":3,"./Templater":6,"./utils":8}],8:[function(require,module,exports){"use strict";function merge(defaultParams,mergeParams){var mergedOptions={};for(var option in defaultParams)mergedOptions[option]=defaultParams[option],void 0!==mergeParams[option]&&(mergedOptions[option]=mergeParams[option]);return mergedOptions}function isJSON(json){try{return json instanceof Object&&JSON.parse(JSON.stringify(json))?!0:!1}catch(e){return!1}}module.exports={merge:merge,isJSON:isJSON}},{}]},{},[7]); \ No newline at end of file diff --git a/docs/assets/js/vendor/jquery.min.js b/docs/assets/js/vendor/jquery.min.js new file mode 100644 index 000000000..49990d6e1 --- /dev/null +++ b/docs/assets/js/vendor/jquery.min.js @@ -0,0 +1,4 @@ +/*! jQuery v2.1.4 | (c) 2005, 2015 jQuery Foundation, Inc. | jquery.org/license */ +!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l=a.document,m="2.1.4",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return!n.isArray(a)&&a-parseFloat(a)+1>=0},isPlainObject:function(a){return"object"!==n.type(a)||a.nodeType||n.isWindow(a)?!1:a.constructor&&!j.call(a.constructor.prototype,"isPrototypeOf")?!1:!0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=l.createElement("script"),b.text=a,l.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:g.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(e=d.call(arguments,2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:k}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b="length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,aa=/[+~]/,ba=/'|\\/g,ca=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),da=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ea=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fa){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(ba,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+ra(o[l]);w=aa.test(a)&&pa(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",ea,!1):e.attachEvent&&e.attachEvent("onunload",ea)),p=!f(g),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?la(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ca,da),a[3]=(a[3]||a[4]||a[5]||"").replace(ca,da),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ca,da).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(ca,da),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return W.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(ca,da).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:oa(function(){return[0]}),last:oa(function(a,b){return[b-1]}),eq:oa(function(a,b,c){return[0>c?c+b:c]}),even:oa(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:oa(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:oa(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:oa(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function sa(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function ta(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ua(a,b,c){for(var d=0,e=b.length;e>d;d++)ga(a,b[d],c);return c}function va(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wa(a,b,c,d,e,f){return d&&!d[u]&&(d=wa(d)),e&&!e[u]&&(e=wa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ua(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:va(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=va(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=va(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sa(function(a){return a===b},h,!0),l=sa(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sa(ta(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wa(i>1&&ta(m),i>1&&ra(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xa(a.slice(i,e)),f>e&&xa(a=a.slice(e)),f>e&&ra(a))}m.push(c)}return ta(m)}function ya(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=va(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&ga.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,ya(e,d)),f.selector=a}return f},i=ga.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ca,da),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ca,da),aa.test(j[0].type)&&pa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&ra(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,aa.test(a)&&pa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ja(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return g.call(b,a)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:l,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}return d=l.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=l,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};A.prototype=n.fn,y=n(l);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?g.call(n(a),this[0]):g.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(C[a]||n.unique(e),B.test(a)&&e.reverse()),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return n.each(a.match(E)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(b=a.memory&&l,c=!0,g=e||0,e=0,f=h.length,d=!0;h&&f>g;g++)if(h[g].apply(l[0],l[1])===!1&&a.stopOnFalse){b=!1;break}d=!1,h&&(i?i.length&&j(i.shift()):b?h=[]:k.disable())},k={add:function(){if(h){var c=h.length;!function g(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&g(c)})}(arguments),d?f=h.length:b&&(e=c,j(b))}return this},remove:function(){return h&&n.each(arguments,function(a,b){var c;while((c=n.inArray(b,h,c))>-1)h.splice(c,1),d&&(f>=c&&f--,g>=c&&g--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],f=0,this},disable:function(){return h=i=b=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,b||k.disable(),this},locked:function(){return!i},fireWith:function(a,b){return!h||c&&!i||(b=b||[],b=[a,b.slice?b.slice():b],d?i.push(b):j(b)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!c}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(H.resolveWith(l,[n]),n.fn.triggerHandler&&(n(l).triggerHandler("ready"),n(l).off("ready"))))}});function I(){l.removeEventListener("DOMContentLoaded",I,!1),a.removeEventListener("load",I,!1),n.ready()}n.ready.promise=function(b){return H||(H=n.Deferred(),"complete"===l.readyState?setTimeout(n.ready):(l.addEventListener("DOMContentLoaded",I,!1),a.addEventListener("load",I,!1))),H.promise(b)},n.ready.promise();var J=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f};n.acceptData=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function K(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=n.expando+K.uid++}K.uid=1,K.accepts=n.acceptData,K.prototype={key:function(a){if(!K.accepts(a))return 0;var b={},c=a[this.expando];if(!c){c=K.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,n.extend(a,b)}}return this.cache[c]||(this.cache[c]={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache[e];if("string"==typeof b)f[b]=c;else if(n.isEmptyObject(f))n.extend(this.cache[e],b);else for(d in b)f[d]=b[d];return f},get:function(a,b){var c=this.cache[this.key(a)];return void 0===b?c:c[b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache[f];if(void 0===b)this.cache[f]={};else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(E)||[])),c=d.length;while(c--)delete g[d[c]]}},hasData:function(a){return!n.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var L=new K,M=new K,N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(O,"-$1").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}M.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return M.hasData(a)||L.hasData(a)},data:function(a,b,c){ +return M.access(a,b,c)},removeData:function(a,b){M.remove(a,b)},_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=M.get(f),1===f.nodeType&&!L.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));L.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=n.camelCase(a);if(f&&void 0===b){if(c=M.get(f,a),void 0!==c)return c;if(c=M.get(f,d),void 0!==c)return c;if(c=P(f,d,void 0),void 0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-1!==a.indexOf("-")&&void 0!==c&&M.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=L.get(a,b),c&&(!d||n.isArray(c)?d=L.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return L.get(a,c)||L.access(a,c,{empty:n.Callbacks("once memory").add(function(){L.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthx",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var U="undefined";k.focusinBubbles="onfocusin"in a;var V=/^key/,W=/^(?:mouse|pointer|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\.(.+)|)$/;function Z(){return!0}function $(){return!1}function _(){try{return l.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof n!==U&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(E)||[""],j=b.length;while(j--)h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g,!1)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&(delete r.handle,L.remove(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,m,o,p=[d||l],q=j.call(b,"type")?b.type:b,r=j.call(b,"namespace")?b.namespace.split("."):[];if(g=h=d=d||l,3!==d.nodeType&&8!==d.nodeType&&!X.test(q+n.event.triggered)&&(q.indexOf(".")>=0&&(r=q.split("."),q=r.shift(),r.sort()),k=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=r.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},e||!o.trigger||o.trigger.apply(d,c)!==!1)){if(!e&&!o.noBubble&&!n.isWindow(d)){for(i=o.delegateType||q,X.test(i+q)||(g=g.parentNode);g;g=g.parentNode)p.push(g),h=g;h===(d.ownerDocument||l)&&p.push(h.defaultView||h.parentWindow||a)}f=0;while((g=p[f++])&&!b.isPropagationStopped())b.type=f>1?i:o.bindType||q,m=(L.get(g,"events")||{})[b.type]&&L.get(g,"handle"),m&&m.apply(g,c),m=k&&g[k],m&&m.apply&&n.acceptData(g)&&(b.result=m.apply(g,c),b.result===!1&&b.preventDefault());return b.type=q,e||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!n.acceptData(d)||k&&n.isFunction(d[q])&&!n.isWindow(d)&&(h=d[k],h&&(d[k]=null),n.event.triggered=q,d[q](),n.event.triggered=void 0,h&&(d[k]=h)),b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(L.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(g.namespace))&&(a.handleObj=g,a.data=g.data,e=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(a.result=e)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!==this;i=i.parentNode||this)if(i.disabled!==!0||"click"!==a.type){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>=0:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h]*)\/>/gi,ba=/<([\w:]+)/,ca=/<|?\w+;/,da=/<(?:script|style|link)/i,ea=/checked\s*(?:[^=]|=\s*.checked.)/i,fa=/^$|\/(?:java|ecma)script/i,ga=/^true\/(.*)/,ha=/^\s*\s*$/g,ia={option:[1,"",""],thead:[1,"",""],col:[2,"",""],tr:[2,"",""],td:[3,"",""],_default:[0,"",""]};ia.optgroup=ia.option,ia.tbody=ia.tfoot=ia.colgroup=ia.caption=ia.thead,ia.th=ia.td;function ja(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function ka(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function la(a){var b=ga.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function ma(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],"globalEval",!b||L.get(b[c],"globalEval"))}function na(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}M.hasData(a)&&(h=M.access(a),i=n.extend({},h),M.set(b,i))}}function oa(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function pa(a,b){var c=b.nodeName.toLowerCase();"input"===c&&T.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}n.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=oa(h),f=oa(a),d=0,e=f.length;e>d;d++)pa(f[d],g[d]);if(b)if(c)for(f=f||oa(a),g=g||oa(h),d=0,e=f.length;e>d;d++)na(f[d],g[d]);else na(a,h);return g=oa(h,"script"),g.length>0&&ma(g,!i&&oa(a,"script")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=0,o=a.length;o>m;m++)if(e=a[m],e||0===e)if("object"===n.type(e))n.merge(l,e.nodeType?[e]:e);else if(ca.test(e)){f=f||k.appendChild(b.createElement("div")),g=(ba.exec(e)||["",""])[1].toLowerCase(),h=ia[g]||ia._default,f.innerHTML=h[1]+e.replace(aa,"<$1>$2>")+h[2],j=h[0];while(j--)f=f.lastChild;n.merge(l,f.childNodes),f=k.firstChild,f.textContent=""}else l.push(b.createTextNode(e));k.textContent="",m=0;while(e=l[m++])if((!d||-1===n.inArray(e,d))&&(i=n.contains(e.ownerDocument,e),f=oa(k.appendChild(e),"script"),i&&ma(f),c)){j=0;while(e=f[j++])fa.test(e.type||"")&&c.push(e)}return k},cleanData:function(a){for(var b,c,d,e,f=n.event.special,g=0;void 0!==(c=a[g]);g++){if(n.acceptData(c)&&(e=c[L.expando],e&&(b=L.cache[e]))){if(b.events)for(d in b.events)f[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);L.cache[e]&&delete L.cache[e]}delete M.cache[c[M.expando]]}}}),n.fn.extend({text:function(a){return J(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=a)})},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=ja(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=ja(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(oa(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&ma(oa(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(oa(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return J(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!da.test(a)&&!ia[(ba.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(aa,"<$1>$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(oa(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(oa(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,m=this,o=l-1,p=a[0],q=n.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&ea.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(c=n.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(f=n.map(oa(c,"script"),ka),g=f.length;l>j;j++)h=c,j!==o&&(h=n.clone(h,!0,!0),g&&n.merge(f,oa(h,"script"))),b.call(this[j],h,j);if(g)for(i=f[f.length-1].ownerDocument,n.map(f,la),j=0;g>j;j++)h=f[j],fa.test(h.type||"")&&!L.access(h,"globalEval")&&n.contains(i,h)&&(h.src?n._evalUrl&&n._evalUrl(h.src):n.globalEval(h.textContent.replace(ha,"")))}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),g=e.length-1,h=0;g>=h;h++)c=h===g?this:this.clone(!0),n(e[h])[b](c),f.apply(d,c.get());return this.pushStack(d)}});var qa,ra={};function sa(b,c){var d,e=n(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:n.css(e[0],"display");return e.detach(),f}function ta(a){var b=l,c=ra[a];return c||(c=sa(a,b),"none"!==c&&c||(qa=(qa||n("")).appendTo(b.documentElement),b=qa[0].contentDocument,b.write(),b.close(),c=sa(a,b),qa.detach()),ra[a]=c),c}var ua=/^margin/,va=new RegExp("^("+Q+")(?!px)[a-z%]+$","i"),wa=function(b){return b.ownerDocument.defaultView.opener?b.ownerDocument.defaultView.getComputedStyle(b,null):a.getComputedStyle(b,null)};function xa(a,b,c){var d,e,f,g,h=a.style;return c=c||wa(a),c&&(g=c.getPropertyValue(b)||c[b]),c&&(""!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),va.test(g)&&ua.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0!==g?g+"":g}function ya(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d=l.documentElement,e=l.createElement("div"),f=l.createElement("div");if(f.style){f.style.backgroundClip="content-box",f.cloneNode(!0).style.backgroundClip="",k.clearCloneStyle="content-box"===f.style.backgroundClip,e.style.cssText="border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;position:absolute",e.appendChild(f);function g(){f.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",f.innerHTML="",d.appendChild(e);var g=a.getComputedStyle(f,null);b="1%"!==g.top,c="4px"===g.width,d.removeChild(e)}a.getComputedStyle&&n.extend(k,{pixelPosition:function(){return g(),b},boxSizingReliable:function(){return null==c&&g(),c},reliableMarginRight:function(){var b,c=f.appendChild(l.createElement("div"));return c.style.cssText=f.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",c.style.marginRight=c.style.width="0",f.style.width="1px",d.appendChild(e),b=!parseFloat(a.getComputedStyle(c,null).marginRight),d.removeChild(e),f.removeChild(c),b}})}}(),n.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var za=/^(none|table(?!-c[ea]).+)/,Aa=new RegExp("^("+Q+")(.*)$","i"),Ba=new RegExp("^([+-])=("+Q+")","i"),Ca={position:"absolute",visibility:"hidden",display:"block"},Da={letterSpacing:"0",fontWeight:"400"},Ea=["Webkit","O","Moz","ms"];function Fa(a,b){if(b in a)return b;var c=b[0].toUpperCase()+b.slice(1),d=b,e=Ea.length;while(e--)if(b=Ea[e]+c,b in a)return b;return d}function Ga(a,b,c){var d=Aa.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Ha(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+R[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+R[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+R[f]+"Width",!0,e))):(g+=n.css(a,"padding"+R[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+R[f]+"Width",!0,e)));return g}function Ia(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=wa(a),g="border-box"===n.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=xa(a,b,f),(0>e||null==e)&&(e=a.style[b]),va.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Ha(a,b,c||(g?"border":"content"),d,f)+"px"}function Ja(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=L.get(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&S(d)&&(f[g]=L.access(d,"olddisplay",ta(d.nodeName)))):(e=S(d),"none"===c&&e||L.set(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=xa(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;return b=n.cssProps[h]||(n.cssProps[h]=Fa(i,h)),g=n.cssHooks[b]||n.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b]:(f=typeof c,"string"===f&&(e=Ba.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(n.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||n.cssNumber[h]||(c+="px"),k.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=Fa(a.style,h)),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=xa(a,b,d)),"normal"===e&&b in Da&&(e=Da[b]),""===c||c?(f=parseFloat(e),c===!0||n.isNumeric(f)?f||0:e):e}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?za.test(n.css(a,"display"))&&0===a.offsetWidth?n.swap(a,Ca,function(){return Ia(a,b,d)}):Ia(a,b,d):void 0},set:function(a,c,d){var e=d&&wa(a);return Ga(a,c,d?Ha(a,b,d,"border-box"===n.css(a,"boxSizing",!1,e),e):0)}}}),n.cssHooks.marginRight=ya(k.reliableMarginRight,function(a,b){return b?n.swap(a,{display:"inline-block"},xa,[a,"marginRight"]):void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+R[d]+b]=f[d]||f[d-2]||f[0];return e}},ua.test(a)||(n.cssHooks[a+b].set=Ga)}),n.fn.extend({css:function(a,b){return J(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=wa(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)},a,b,arguments.length>1)},show:function(){return Ja(this,!0)},hide:function(){return Ja(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){S(this)?n(this).show():n(this).hide()})}});function Ka(a,b,c,d,e){return new Ka.prototype.init(a,b,c,d,e)}n.Tween=Ka,Ka.prototype={constructor:Ka,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=Ka.propHooks[this.prop];return a&&a.get?a.get(this):Ka.propHooks._default.get(this)},run:function(a){var b,c=Ka.propHooks[this.prop];return this.options.duration?this.pos=b=n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Ka.propHooks._default.set(this),this}},Ka.prototype.init.prototype=Ka.prototype,Ka.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[n.cssProps[a.prop]]||n.cssHooks[a.prop])?n.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Ka.propHooks.scrollTop=Ka.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},n.fx=Ka.prototype.init,n.fx.step={};var La,Ma,Na=/^(?:toggle|show|hide)$/,Oa=new RegExp("^(?:([+-])=|)("+Q+")([a-z%]*)$","i"),Pa=/queueHooks$/,Qa=[Va],Ra={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=Oa.exec(b),f=e&&e[3]||(n.cssNumber[a]?"":"px"),g=(n.cssNumber[a]||"px"!==f&&+d)&&Oa.exec(n.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,n.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function Sa(){return setTimeout(function(){La=void 0}),La=n.now()}function Ta(a,b){var c,d=0,e={height:a};for(b=b?1:0;4>d;d+=2-b)c=R[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function Ua(a,b,c){for(var d,e=(Ra[b]||[]).concat(Ra["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function Va(a,b,c){var d,e,f,g,h,i,j,k,l=this,m={},o=a.style,p=a.nodeType&&S(a),q=L.get(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,l.always(function(){l.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=n.css(a,"display"),k="none"===j?L.get(a,"olddisplay")||ta(a.nodeName):j,"inline"===k&&"none"===n.css(a,"float")&&(o.display="inline-block")),c.overflow&&(o.overflow="hidden",l.always(function(){o.overflow=c.overflow[0],o.overflowX=c.overflow[1],o.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],Na.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(p?"hide":"show")){if("show"!==e||!q||void 0===q[d])continue;p=!0}m[d]=q&&q[d]||n.style(a,d)}else j=void 0;if(n.isEmptyObject(m))"inline"===("none"===j?ta(a.nodeName):j)&&(o.display=j);else{q?"hidden"in q&&(p=q.hidden):q=L.access(a,"fxshow",{}),f&&(q.hidden=!p),p?n(a).show():l.done(function(){n(a).hide()}),l.done(function(){var b;L.remove(a,"fxshow");for(b in m)n.style(a,b,m[b])});for(d in m)g=Ua(p?q[d]:0,d,l),d in q||(q[d]=g.start,p&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function Wa(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function Xa(a,b,c){var d,e,f=0,g=Qa.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=La||Sa(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:La||Sa(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(Wa(k,j.opts.specialEasing);g>f;f++)if(d=Qa[f].call(j,a,k,j.opts))return d;return n.map(k,Ua,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(Xa,{tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],Ra[c]=Ra[c]||[],Ra[c].unshift(b)},prefilter:function(a,b){b?Qa.unshift(a):Qa.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(S).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=Xa(this,n.extend({},a),f);(e||L.get(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=L.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&Pa.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=L.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(Ta(b,!0),a,d,e)}}),n.each({slideDown:Ta("show"),slideUp:Ta("hide"),slideToggle:Ta("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=0,c=n.timers;for(La=n.now();b1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===U?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),d=n.attrHooks[b]||(n.expr.match.bool.test(b)?Za:Ya)), +void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=n.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void n.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)&&(a[d]=!1),a.removeAttribute(c)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),Za={set:function(a,b,c){return b===!1?n.removeAttr(a,c):a.setAttribute(c,c),c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=$a[b]||n.find.attr;$a[b]=function(a,b,d){var e,f;return d||(f=$a[b],$a[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,$a[b]=f),e}});var _a=/^(?:input|select|textarea|button)$/i;n.fn.extend({prop:function(a,b){return J(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[n.propFix[a]||a]})}}),n.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!n.isXMLDoc(a),f&&(b=n.propFix[b]||b,e=n.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){return a.hasAttribute("tabindex")||_a.test(a.nodeName)||a.href?a.tabIndex:-1}}}}),k.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this});var ab=/[\t\r\n\f]/g;n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h="string"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ab," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=n.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0===arguments.length||"string"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ab," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?n.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(n.isFunction(a)?function(c){n(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=n(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===U||"boolean"===c)&&(this.className&&L.set(this,"__className__",this.className),this.className=this.className||a===!1?"":L.get(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(ab," ").indexOf(b)>=0)return!0;return!1}});var bb=/\r/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(bb,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.trim(n.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=n.inArray(d.value,f)>=0)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>=0:void 0}},k.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var cb=n.now(),db=/\?/;n.parseJSON=function(a){return JSON.parse(a+"")},n.parseXML=function(a){var b,c;if(!a||"string"!=typeof a)return null;try{c=new DOMParser,b=c.parseFromString(a,"text/xml")}catch(d){b=void 0}return(!b||b.getElementsByTagName("parsererror").length)&&n.error("Invalid XML: "+a),b};var eb=/#.*$/,fb=/([?&])_=[^&]*/,gb=/^(.*?):[ \t]*([^\r\n]*)$/gm,hb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,ib=/^(?:GET|HEAD)$/,jb=/^\/\//,kb=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,lb={},mb={},nb="*/".concat("*"),ob=a.location.href,pb=kb.exec(ob.toLowerCase())||[];function qb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(E)||[];if(n.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function rb(a,b,c,d){var e={},f=a===mb;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function sb(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&n.extend(!0,a,d),a}function tb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function ub(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:ob,type:"GET",isLocal:hb.test(pb[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":nb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?sb(sb(a,n.ajaxSettings),b):sb(n.ajaxSettings,a)},ajaxPrefilter:qb(lb),ajaxTransport:qb(mb),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=n.ajaxSetup({},b),l=k.context||k,m=k.context&&(l.nodeType||l.jquery)?n(l):n.event,o=n.Deferred(),p=n.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!f){f={};while(b=gb.exec(e))f[b[1].toLowerCase()]=b[2]}b=f[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?e:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return c&&c.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||ob)+"").replace(eb,"").replace(jb,pb[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=n.trim(k.dataType||"*").toLowerCase().match(E)||[""],null==k.crossDomain&&(h=kb.exec(k.url.toLowerCase()),k.crossDomain=!(!h||h[1]===pb[1]&&h[2]===pb[2]&&(h[3]||("http:"===h[1]?"80":"443"))===(pb[3]||("http:"===pb[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=n.param(k.data,k.traditional)),rb(lb,k,b,v),2===t)return v;i=n.event&&k.global,i&&0===n.active++&&n.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!ib.test(k.type),d=k.url,k.hasContent||(k.data&&(d=k.url+=(db.test(d)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=fb.test(d)?d.replace(fb,"$1_="+cb++):d+(db.test(d)?"&":"?")+"_="+cb++)),k.ifModified&&(n.lastModified[d]&&v.setRequestHeader("If-Modified-Since",n.lastModified[d]),n.etag[d]&&v.setRequestHeader("If-None-Match",n.etag[d])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+nb+"; q=0.01":""):k.accepts["*"]);for(j in k.headers)v.setRequestHeader(j,k.headers[j]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(j in{success:1,error:1,complete:1})v[j](k[j]);if(c=rb(mb,k,b,v)){v.readyState=1,i&&m.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,c.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,f,h){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),c=void 0,e=h||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,f&&(u=tb(k,v,f)),u=ub(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(n.lastModified[d]=w),w=v.getResponseHeader("etag"),w&&(n.etag[d]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,i&&m.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),i&&(m.trigger("ajaxComplete",[v,k]),--n.active||n.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){var b;return n.isFunction(a)?this.each(function(b){n(this).wrapAll(a.call(this,b))}):(this[0]&&(b=n(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this)},wrapInner:function(a){return this.each(n.isFunction(a)?function(b){n(this).wrapInner(a.call(this,b))}:function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}}),n.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var vb=/%20/g,wb=/\[\]$/,xb=/\r?\n/g,yb=/^(?:submit|button|image|reset|file)$/i,zb=/^(?:input|select|textarea|keygen)/i;function Ab(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||wb.test(a)?d(a,e):Ab(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)Ab(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)Ab(c,a[c],b,e);return d.join("&").replace(vb,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&zb.test(this.nodeName)&&!yb.test(a)&&(this.checked||!T.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(xb,"\r\n")}}):{name:b.name,value:c.replace(xb,"\r\n")}}).get()}}),n.ajaxSettings.xhr=function(){try{return new XMLHttpRequest}catch(a){}};var Bb=0,Cb={},Db={0:200,1223:204},Eb=n.ajaxSettings.xhr();a.attachEvent&&a.attachEvent("onunload",function(){for(var a in Cb)Cb[a]()}),k.cors=!!Eb&&"withCredentials"in Eb,k.ajax=Eb=!!Eb,n.ajaxTransport(function(a){var b;return k.cors||Eb&&!a.crossDomain?{send:function(c,d){var e,f=a.xhr(),g=++Bb;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)f.setRequestHeader(e,c[e]);b=function(a){return function(){b&&(delete Cb[g],b=f.onload=f.onerror=null,"abort"===a?f.abort():"error"===a?d(f.status,f.statusText):d(Db[f.status]||f.status,f.statusText,"string"==typeof f.responseText?{text:f.responseText}:void 0,f.getAllResponseHeaders()))}},f.onload=b(),f.onerror=b("error"),b=Cb[g]=b("abort");try{f.send(a.hasContent&&a.data||null)}catch(h){if(b)throw h}},abort:function(){b&&b()}}:void 0}),n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(d,e){b=n(" +{% endhighlight %} + +### Events + +When showing a new tab, the events fire in the following order: + +1. `hide.bs.tab` (on the current active tab) +2. `show.bs.tab` (on the to-be-shown tab) +3. `hidden.bs.tab` (on the previous active tab, the same one as for the `hide.bs.tab` event) +4. `shown.bs.tab` (on the newly-active just-shown tab, the same one as for the `show.bs.tab` event) + +If no tab was already active, then the `hide.bs.tab` and `hidden.bs.tab` events will not be fired. + + + + + Event Type + Description + + + + + show.bs.tab + This event fires on tab show, but before the new tab has been shown. Use event.target and event.relatedTarget to target the active tab and the previous active tab (if available) respectively. + + + shown.bs.tab + This event fires on tab show after a tab has been shown. Use event.target and event.relatedTarget to target the active tab and the previous active tab (if available) respectively. + + + hide.bs.tab + This event fires when a new tab is to be shown (and thus the previous active tab is to be hidden). Use event.target and event.relatedTarget to target the current active tab and the new soon-to-be-active tab, respectively. + + + hidden.bs.tab + This event fires after a new tab is shown (and thus the previous active tab is hidden). Use event.target and event.relatedTarget to target the previous active tab and the new active tab, respectively. + + + + +{% highlight js %} +$('a[data-toggle="tab"]').on('shown.bs.tab', function (e) { + e.target // newly activated tab + e.relatedTarget // previous active tab +}) +{% endhighlight %} diff --git a/docs/components/pagination.md b/docs/components/pagination.md new file mode 100644 index 000000000..4230a6647 --- /dev/null +++ b/docs/components/pagination.md @@ -0,0 +1,179 @@ +--- +layout: docs +title: Pagination +group: components +--- + +Provide pagination links for your site or app with the multi-page pagination component, or the simpler [pager alternative](#pager). + +## Contents + +* Will be replaced with the ToC, excluding the "Contents" header +{:toc} + +## Default pagination + +Simple pagination inspired by Rdio, great for apps and search results. The large block is hard to miss, easily scalable, and provides large click areas. + +{% example html %} + + + + + « + Previous + + + 1 + 2 + 3 + 4 + 5 + + + » + Next + + + + +{% endexample %} + +### Disabled and active states + +Links are customizable for different circumstances. Use `.disabled` for unclickable links and `.active` to indicate the current page. + +{% example html %} + + + + + « + Previous + + + + 1 (current) + + 2 + 3 + 4 + 5 + + + » + Next + + + + +{% endexample %} + +You can optionally swap out active or disabled anchors for ``, or omit the anchor in the case of the prev/next arrows, to remove click functionality while retaining intended styles. + +{% example html %} + + + + + « + Previous + + + 1 (current) + + +{% endexample %} + + +### Sizing + +Fancy larger or smaller pagination? Add `.pagination-lg` or `.pagination-sm` for additional sizes. + +{% example html %} + + + + + « + Previous + + + 1 + 2 + 3 + + + » + Next + + + + +{% endexample %} + +{% example html %} + + + + + « + Previous + + + 1 + 2 + 3 + + + » + Next + + + + +{% endexample %} + +## Pager + +Quick previous and next links for simple pagination implementations with light markup and styles. It's great for simple sites like blogs or magazines. + +### Default example + +By default, the pager centers links. + +{% example html %} + + + Previous + Next + + +{% endexample %} + +### Aligned links + +Alternatively, you can align each link to the sides: + +{% example html %} + + + Older + Newer + + +{% endexample %} + + +### Optional disabled state + +Pager links also use the `.disabled` class. + +{% example html %} + + + Older + Newer + + +{% endexample %} diff --git a/docs/components/popovers.md b/docs/components/popovers.md new file mode 100644 index 000000000..9621bb7d8 --- /dev/null +++ b/docs/components/popovers.md @@ -0,0 +1,349 @@ +--- +layout: docs +title: Popovers +group: components +--- + +Add small overlay content, like those found in iOS, to any element for housing secondary information. + +## Contents + +* Will be replaced with the ToC, excluding the "Contents" header +{:toc} + +## Overview + +Things to know when using the popover plugin: + + +- Popovers rely on the 3rd party library [Tether](http://github.hubspot.com/tether/) for positioning. You must include [tether.min.js](https://github.com/HubSpot/tether/blob/master/dist/js/tether.min.js) before bootstrap.js in order for popovers to work! +- Popovers require the [tooltip plugin]({{ site.baseurl }}/components/tooltips) as a dependency. +- Popovers are opt-in for performance reasons, so **you must initialize them yourself**. +- Zero-length `title` and `content` values will never show a popover. +- Specify `container: 'body'` to avoid rendering problems in more complex components (like our input groups, button groups, etc). +- Triggering popovers on hidden elements will not work. +- Popovers for `.disabled` or `disabled` elements must be triggered on a wrapper element. +- When triggered from hyperlinks that span multiple lines, popovers will be centered. Use `white-space: nowrap;` on your ``s to avoid this behavior. + +Got all that? Great, let's see how they work with some examples. + +## Example: Enable popovers everywhere + +One way to initialize all popovers on a page would be to select them by their `data-toggle` attribute: + +{% highlight js %} +$(function () { + $('[data-toggle="popover"]').popover() +}) +{% endhighlight %} + +## Example: Using the `container` option + +When you have some styles on a parent element that interfere with a popover, you'll want to specify a custom `container` so that the popover's HTML appears within that element instead. + +{% highlight js %} +$(function () { + $('.example-popover').popover({ + container: 'body' + }) +}) +{% endhighlight %} + +## Static popover + +Four options are available: top, right, bottom, and left aligned. + + + + + Popover top + + Sed posuere consectetur est at lobortis. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. + + + + + + Popover right + + Sed posuere consectetur est at lobortis. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. + + + + + + Popover bottom + + + Sed posuere consectetur est at lobortis. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. + + + + + + Popover left + + Sed posuere consectetur est at lobortis. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. + + + + + + +## Live demo + +{% example html %} +Click to toggle popover +{% endexample %} + +### Four directions + + + + + Popover on top + + + Popover on right + + + Popover on bottom + + + Popover on left + + + + +{% highlight html %} + + Popover on top + + + + Popover on right + + + + Popover on bottom + + + + Popover on left + +{% endhighlight %} + +### Dismiss on next click + +Use the `focus` trigger to dismiss popovers on the next click that the user makes. + +{% callout danger %} +#### Specific markup required for dismiss-on-next-click + +For proper cross-browser and cross-platform behavior, you must use the `` tag, _not_ the `` tag, and you also must include a [`tabindex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes#tabindex) attribute. +{% endcallout %} + +{% example html %} +Dismissible popover +{% endexample %} + +{% highlight js %} +$('.popover-dismiss').popover({ + trigger: 'focus' +}) +{% endhighlight %} + + + +## Usage + +Enable popovers via JavaScript: + +{% highlight js %}$('#example').popover(options){% endhighlight %} + +### Options + +Options can be passed via data attributes or JavaScript. For data attributes, append the option name to `data-`, as in `data-animation=""`. + + + + + + Name + Type + Default + Description + + + + + animation + boolean + true + Apply a CSS fade transition to the popover + + + container + string | false + false + + Appends the popover to a specific element. Example: container: 'body'. This option is particularly useful in that it allows you to position the popover in the flow of the document near the triggering element - which will prevent the popover from floating away from the triggering element during a window resize. + + + + content + string | element | function + '' + + Default content value if data-content attribute isn't present. + If a function is given, it will be called with its this reference set to the element that the popover is attached to. + + + + delay + number | object + 0 + + Delay showing and hiding the popover (ms) - does not apply to manual trigger type + If a number is supplied, delay is applied to both hide/show + Object structure is: delay: { "show": 500, "hide": 100 } + + + + html + boolean + false + Insert HTML into the popover. If false, jQuery's text method will be used to insert content into the DOM. Use text if you're worried about XSS attacks. + + + placement + string | function + 'right' + + How to position the popover - top | bottom | left | right | auto.When "auto" is specified, it will dynamically reorient the popover. For example, if placement is "auto left", the popover will display to the left when possible, otherwise it will display right. + When a function is used to determine the placement, it is called with the popover DOM node as its first argument and the triggering element DOM node as its second. The this context is set to the popover instance. + + + + selector + string + false + If a selector is provided, popover objects will be delegated to the specified targets. In practice, this is used to enable dynamic HTML content to have popovers added. See this and an informative example. + + + template + string + '<div class="popover" role="tooltip"><div class="popover-arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>' + + Base HTML to use when creating the popover. + The popover's title will be injected into the .popover-title. + The popover's content will be injected into the .popover-content. + .popover-arrow will become the popover's arrow. + The outermost wrapper element should have the .popover class. + + + + title + string | element | function + '' + + Default title value if title attribute isn't present. + If a function is given, it will be called with its this reference set to the element that the popover is attached to. + + + + trigger + string + 'click' + How popover is triggered - click | hover | focus | manual. You may pass multiple triggers; separate them with a space. `manual` cannot be combined with any other trigger. + + + constraints + Array + 'hover focus' + An array of constraints - passed through to Tether. For more information refer to Tether's constraint docs. + + + offsets + string + '0 0' + Offset of the popover relative to its target. For more information refer to Tether's offset docs. + + + + + +{% callout info %} +#### Data attributes for individual popovers + +Options for individual popovers can alternatively be specified through the use of data attributes, as explained above. +{% endcallout %} + +### Methods + +#### `$().popover(options)` + +Initializes popovers for an element collection. + +#### `.popover('show')` + +Reveals an element's popover. **Returns to the caller before the popover has actually been shown** (i.e. before the `shown.bs.popover` event occurs). This is considered a "manual" triggering of the popover. Popovers whose both title and content are zero-length are never displayed. + +{% highlight js %}$('#element').popover('show'){% endhighlight %} + +#### `.popover('hide')` + +Hides an element's popover. **Returns to the caller before the popover has actually been hidden** (i.e. before the `hidden.bs.popover` event occurs). This is considered a "manual" triggering of the popover. + +{% highlight js %}$('#element').popover('hide'){% endhighlight %} + +#### `.popover('toggle')` + +Toggles an element's popover. **Returns to the caller before the popover has actually been shown or hidden** (i.e. before the `shown.bs.popover` or `hidden.bs.popover` event occurs). This is considered a "manual" triggering of the popover. + +{% highlight js %}$('#element').popover('toggle'){% endhighlight %} + +#### `.popover('dispose')` + +Hides and destroys an element's popover. Popovers that use delegation (which are created using [the `selector` option](#options)) cannot be individually destroyed on descendant trigger elements. + + +{% highlight js %}$('#element').popover('dispose'){% endhighlight %} + +### Events + + + + + + Event Type + Description + + + + + show.bs.popover + This event fires immediately when the show instance method is called. + + + shown.bs.popover + This event is fired when the popover has been made visible to the user (will wait for CSS transitions to complete). + + + hide.bs.popover + This event is fired immediately when the hide instance method has been called. + + + hidden.bs.popover + This event is fired when the popover has finished being hidden from the user (will wait for CSS transitions to complete). + + + + + +{% highlight js %} +$('#myPopover').on('hidden.bs.popover', function () { + // do something… +}) +{% endhighlight %} diff --git a/docs/components/progress.md b/docs/components/progress.md new file mode 100644 index 000000000..e801373cd --- /dev/null +++ b/docs/components/progress.md @@ -0,0 +1,74 @@ +--- +layout: docs +title: Progress +group: components +--- + +Stylize [the HTML5 `` element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/progress) with a few extra classes and some crafty browser-specific CSS. Be sure to read up on the browser support. + +## Contents + +* Will be replaced with the ToC, excluding the "Contents" header +{:toc} + +### Example + +{% example html %} +0% +25% +50% +75% +100% +{% endexample %} + +### IE9 support + +Internet Explorer 9 doesn't support the HTML5 `` element, but we can work around that. + +{% example html %} + + + 25% + + +{% endexample %} + +### Contextual alternatives + +Progress bars use some of the same button and alert classes for consistent styles. + +{% example html %} +25% +50% +75% +100% +{% endexample %} + +### Striped + +Uses a gradient to create a striped effect. + +{% example html %} +10% +25% +50% +75% +100% +{% endexample %} + +### Animated stripes + +The striped gradient can also be animated. Add `.progress-animated` to `.progress` to animate the stripes right to left via CSS3 animations. + +**Animated progress bars do not work in IE9 and Opera 12** as they don't support CSS3 animations. + + + 25% + + Toggle animation + + + +{% highlight html %} +25% +{% endhighlight %} diff --git a/docs/components/scrollspy.md b/docs/components/scrollspy.md new file mode 100644 index 000000000..4ae0fa219 --- /dev/null +++ b/docs/components/scrollspy.md @@ -0,0 +1,162 @@ +--- +layout: docs +title: Scrollspy +group: components +--- + +## Contents + +* Will be replaced with the ToC, excluding the "Contents" header +{:toc} + +## Example in navbar + +The ScrollSpy plugin is for automatically updating nav targets based on scroll position. Scroll the area below the navbar and watch the active class change. The dropdown sub items will be highlighted as well. + + + + Project Name + + @fat + @mdo + + Dropdown + + one + two + + three + + + + + + @fat + Ad leggings keytar, brunch id art party dolor labore. Pitchfork yr enim lo-fi before they sold out qui. Tumblr farm-to-table bicycle rights whatever. Anim keffiyeh carles cardigan. Velit seitan mcsweeney's photo booth 3 wolf moon irure. Cosby sweater lomo jean shorts, williamsburg hoodie minim qui you probably haven't heard of them et cardigan trust fund culpa biodiesel wes anderson aesthetic. Nihil tattooed accusamus, cred irony biodiesel keffiyeh artisan ullamco consequat. + @mdo + Veniam marfa mustache skateboard, adipisicing fugiat velit pitchfork beard. Freegan beard aliqua cupidatat mcsweeney's vero. Cupidatat four loko nisi, ea helvetica nulla carles. Tattooed cosby sweater food truck, mcsweeney's quis non freegan vinyl. Lo-fi wes anderson +1 sartorial. Carles non aesthetic exercitation quis gentrify. Brooklyn adipisicing craft beer vice keytar deserunt. + one + Occaecat commodo aliqua delectus. Fap craft beer deserunt skateboard ea. Lomo bicycle rights adipisicing banh mi, velit ea sunt next level locavore single-origin coffee in magna veniam. High life id vinyl, echo park consequat quis aliquip banh mi pitchfork. Vero VHS est adipisicing. Consectetur nisi DIY minim messenger bag. Cred ex in, sustainable delectus consectetur fanny pack iphone. + two + In incididunt echo park, officia deserunt mcsweeney's proident master cleanse thundercats sapiente veniam. Excepteur VHS elit, proident shoreditch +1 biodiesel laborum craft beer. Single-origin coffee wayfarers irure four loko, cupidatat terry richardson master cleanse. Assumenda you probably haven't heard of them art party fanny pack, tattooed nulla cardigan tempor ad. Proident wolf nesciunt sartorial keffiyeh eu banh mi sustainable. Elit wolf voluptate, lo-fi ea portland before they sold out four loko. Locavore enim nostrud mlkshk brooklyn nesciunt. + three + Ad leggings keytar, brunch id art party dolor labore. Pitchfork yr enim lo-fi before they sold out qui. Tumblr farm-to-table bicycle rights whatever. Anim keffiyeh carles cardigan. Velit seitan mcsweeney's photo booth 3 wolf moon irure. Cosby sweater lomo jean shorts, williamsburg hoodie minim qui you probably haven't heard of them et cardigan trust fund culpa biodiesel wes anderson aesthetic. Nihil tattooed accusamus, cred irony biodiesel keffiyeh artisan ullamco consequat. + Keytar twee blog, culpa messenger bag marfa whatever delectus food truck. Sapiente synth id assumenda. Locavore sed helvetica cliche irony, thundercats you probably haven't heard of them consequat hoodie gluten-free lo-fi fap aliquip. Labore elit placeat before they sold out, terry richardson proident brunch nesciunt quis cosby sweater pariatur keffiyeh ut helvetica artisan. Cardigan craft beer seitan readymade velit. VHS chambray laboris tempor veniam. Anim mollit minim commodo ullamco thundercats. + + + + + +## Usage + +### Requires Bootstrap nav + +Scrollspy currently requires the use of a [Bootstrap nav component]({{ site.baseurl }}/components/navs/) for proper highlighting of active links. + +### Requires relative positioning + +No matter the implementation method, scrollspy requires the use of `position: relative;` on the element you're spying on. In most cases this is the ``. When scrollspying on elements other than the ``, be sure to have a `height` set and `overflow-y: scroll;` applied. + +### Via data attributes + +To easily add scrollspy behavior to your topbar navigation, add `data-spy="scroll"` to the element you want to spy on (most typically this would be the ``). Then add the `data-target` attribute with the ID or class of the parent element of any Bootstrap `.nav` component. + +{% highlight css %} +body { + position: relative; +} +{% endhighlight %} + +{% highlight html %} + + ... + + + ... + + + ... + +{% endhighlight %} + +### Via JavaScript + +After adding `position: relative;` in your CSS, call the scrollspy via JavaScript: + +{% highlight js %} +$('body').scrollspy({ target: '#navbar-example' }) +{% endhighlight %} + +{% callout danger %} +#### Resolvable ID targets required + +Navbar links must have resolvable id targets. For example, a `home` must correspond to something in the DOM like ``. +{% endcallout %} + +{% callout info %} +#### Non-`:visible` target elements ignored + +Target elements that are not [`:visible` according to jQuery](https://api.jquery.com/visible-selector/) will be ignored and their corresponding nav items will never be highlighted. +{% endcallout %} + +### Methods + +#### `.scrollspy('refresh')` + +When using scrollspy in conjunction with adding or removing of elements from the DOM, you'll need to call the refresh method like so: + +{% highlight js %} +$('[data-spy="scroll"]').each(function () { + var $spy = $(this).scrollspy('refresh') +}) +{% endhighlight %} + + +### Options + +Options can be passed via data attributes or JavaScript. For data attributes, append the option name to `data-`, as in `data-offset=""`. + + + + + + Name + Type + Default + Description + + + + + offset + number + 10 + Pixels to offset from top when calculating position of scroll. + + + + + +### Events + + + + + + Event Type + Description + + + + + activate.bs.scrollspy + This event fires whenever a new item becomes activated by the scrollspy. + + + + +{% highlight js %} +$('#myScrollspy').on('activate.bs.scrollspy', function () { + // do something… +}) +{% endhighlight %} diff --git a/docs/components/tooltips.md b/docs/components/tooltips.md new file mode 100644 index 000000000..bba918d9d --- /dev/null +++ b/docs/components/tooltips.md @@ -0,0 +1,306 @@ +--- +layout: docs +title: Tooltips +group: components +--- + +Inspired by the excellent Tipsy jQuery plugin written by Jason Frame. Tooltips are an updated version, which don't rely on images, use CSS3 for animations, and data-attributes for local title storage. + +## Contents + +* Will be replaced with the ToC, excluding the "Contents" header +{:toc} + +## Overview + +Things to know when using the tooltip plugin: + +- Tooltips rely on the 3rd party library [Tether](http://github.hubspot.com/tether/) for positioning. You must include [tether.min.js](https://github.com/HubSpot/tether/blob/master/dist/js/tether.min.js) before bootstrap.js in order for tooltips to work! +- Tooltips are opt-in for performance reasons, so **you must initialize them yourself**. +- Tooltips with zero-length titles are never displayed. +- Specify `container: 'body'` to avoid rendering problems in more complex components (like our input groups, button groups, etc). +- Triggering tooltips on hidden elements will not work. +- Tooltips for `.disabled` or `disabled` elements must be triggered on a wrapper element. +- When triggered from hyperlinks that span multiple lines, tooltips will be centered. Use `white-space: nowrap;` on your ``s to avoid this behavior. + +Got all that? Great, let's see how they work with some examples. + +## Example: Enable tooltips everywhere + +One way to initialize all tooltips on a page would be to select them by their `data-toggle` attribute: + +{% highlight js %} +$(function () { + $('[data-toggle="tooltip"]').tooltip() +}) +{% endhighlight %} + +## Examples + +Hover over the links below to see tooltips: + + + Tight pants next level keffiyeh you probably haven't heard of them. Photo booth beard raw denim letterpress vegan messenger bag stumptown. Farm-to-table seitan, mcsweeney's fixie sustainable quinoa 8-bit american apparel have a terry richardson vinyl chambray. Beard stumptown, cardigans banh mi lomo thundercats. Tofu biodiesel williamsburg marfa, four loko mcsweeney's cleanse vegan chambray. A really ironic artisan whatever keytar, scenester farm-to-table banksy Austin twitter handle freegan cred raw denim single-origin coffee viral. + + + +### Static demo + +Four options are available: top, right, bottom, and left aligned. + + + + + + Tooltip on the top + + + + + + Tooltip on the right + + + + + + Tooltip on the bottom + + + + + + Tooltip on the left + + + + +### Interactive demo + +Hover over the buttons below to see their tooltips. + + + + Tooltip on top + Tooltip on right + Tooltip on bottom + Tooltip on left + + + +{% highlight html %} + + Tooltip on top + + + Tooltip on right + + + Tooltip on bottom + + + Tooltip on left + +{% endhighlight %} + +## Usage + +The tooltip plugin generates content and markup on demand, and by default places tooltips after their trigger element. + +Trigger the tooltip via JavaScript: + +{% highlight js %} +$('#example').tooltip(options) +{% endhighlight %} + +### Markup + +The required markup for a tooltip is only a `data` attribute and `title` on the HTML element you wish to have a tooltip. The generated markup of a tooltip is rather simple, though it does require a position (by default, set to `top` by the plugin). + +{% highlight html %} + +Hover over me + + + + + + Some tooltip text! + + +{% endhighlight %} + +### Options + +Options can be passed via data attributes or JavaScript. For data attributes, append the option name to `data-`, as in `data-animation=""`. + + + + + + Name + Type + Default + Description + + + + + animation + boolean + true + Apply a CSS fade transition to the tooltip + + + container + string | false + false + + Appends the tooltip to a specific element. Example: container: 'body'. This option is particularly useful in that it allows you to position the tooltip in the flow of the document near the triggering element - which will prevent the tooltip from floating away from the triggering element during a window resize. + + + + delay + number | object + 0 + + Delay showing and hiding the tooltip (ms) - does not apply to manual trigger type + If a number is supplied, delay is applied to both hide/show + Object structure is: delay: { "show": 500, "hide": 100 } + + + + html + boolean + false + Insert HTML into the tooltip. If false, jQuery's text method will be used to insert content into the DOM. Use text if you're worried about XSS attacks. + + + placement + string | function + 'top' + + How to position the tooltip - top | bottom | left | right | auto.When "auto" is specified, it will dynamically reorient the tooltip. For example, if placement is "auto left", the tooltip will display to the left when possible, otherwise it will display right. + When a function is used to determine the placement, it is called with the tooltip DOM node as its first argument and the triggering element DOM node as its second. The this context is set to the tooltip instance. + + + + selector + string + false + If a selector is provided, popover objects will be delegated to the specified targets. In practice, this is used to enable dynamic HTML content to have popovers added. See this and an informative example. + + + template + string + '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>' + + Base HTML to use when creating the tooltip. + The tooltip's title will be injected into the .tooltip-inner. + .tooltip-arrow will become the tooltip's arrow. + The outermost wrapper element should have the .tooltip class. + + + + title + string | element | function + '' + + Default title value if title attribute isn't present. + If a function is given, it will be called with its this reference set to the element that the tooltip is attached to. + + + + trigger + string + 'hover focus' + How tooltip is triggered - click | hover | focus | manual. You may pass multiple triggers; separate them with a space. `manual` cannot be combined with any other trigger. + + + constraints + Array + [] + An array of constraints - passed through to Tether. For more information refer to Tether's constraint docs. + + + offsets + string + '0 0' + Offset of the popover relative to its target. For more information refer to Tether's offset docs. + + + + + +{% callout info %} +#### Data attributes for individual tooltips + +Options for individual tooltips can alternatively be specified through the use of data attributes, as explained above. +{% endcallout %} + +### Methods + +#### `$().tooltip(options)` + +Attaches a tooltip handler to an element collection. + +#### `.tooltip('show')` + +Reveals an element's tooltip. **Returns to the caller before the tooltip has actually been shown** (i.e. before the `shown.bs.tooltip` event occurs). This is considered a "manual" triggering of the tooltip. Tooltips with zero-length titles are never displayed. + +{% highlight js %}$('#element').tooltip('show'){% endhighlight %} + +#### `.tooltip('hide')` + +Hides an element's tooltip. **Returns to the caller before the tooltip has actually been hidden** (i.e. before the `hidden.bs.tooltip` event occurs). This is considered a "manual" triggering of the tooltip. + +{% highlight js %}$('#element').tooltip('hide'){% endhighlight %} + +#### `.tooltip('toggle')` + +Toggles an element's tooltip. **Returns to the caller before the tooltip has actually been shown or hidden** (i.e. before the `shown.bs.tooltip` or `hidden.bs.tooltip` event occurs). This is considered a "manual" triggering of the tooltip. + +{% highlight js %}$('#element').tooltip('toggle'){% endhighlight %} + +#### `.tooltip('dispose')` + +Hides and destroys an element's tooltip. Tooltips that use delegation (which are created using [the `selector` option](#options)) cannot be individually destroyed on descendant trigger elements. + +{% highlight js %}$('#element').tooltip('dispose'){% endhighlight %} + +### Events + + + + + + Event Type + Description + + + + + show.bs.tooltip + This event fires immediately when the show instance method is called. + + + shown.bs.tooltip + This event is fired when the tooltip has been made visible to the user (will wait for CSS transitions to complete). + + + hide.bs.tooltip + This event is fired immediately when the hide instance method has been called. + + + hidden.bs.tooltip + This event is fired when the tooltip has finished being hidden from the user (will wait for CSS transitions to complete). + + + + + +{% highlight js %} +$('#myTooltip').on('hidden.bs.tooltip', function () { + // do something… +}) +{% endhighlight %} diff --git a/docs/components/utilities.md b/docs/components/utilities.md new file mode 100644 index 000000000..4d8ea4b28 --- /dev/null +++ b/docs/components/utilities.md @@ -0,0 +1,326 @@ +--- +layout: docs +title: Utility classes +group: components +--- + +Bootstrap includes dozens of utilities—classes with a single purpose. They're designed to reduce the frequency of highly repetitive declarations in your CSS while allowing for quick and easy development. + +## Contents + +* Will be replaced with the ToC, excluding the "Contents" header +{:toc} + +## Spacing + +Assign `margin` or `padding` to an element or a subset of its sides with shorthand classes. Includes support for individual properties, all properties, and vertical and horizontal properties. All classes are multiples on the global default value, `1rem`. + +The classes are named using the format: `{property}-{sides}-{size}` + +Where *property* is one of: +* `m` - for classes that set `margin` +* `p` - for classes that set `padding` + +Where *sides* is one of: +* `t` - for classes that set `margin-top` or `padding-top` +* `b` - for classes that set `margin-bottom` or `padding-bottom` +* `l` - for classes that set `margin-left` or `padding-left` +* `r` - for classes that set `margin-right` or `padding-right` +* `x` - for classes that set both `*-left` and `*-right` +* `y` - for classes that set both `*-top` and `*-bottom` +* `a` - for classes that set a `margin` or `padding` on all 4 sides of the element + +Where *size* is one of: +* `0` - for classes that eliminate the `margin` or `padding` by setting it to `0` +* `1` - (by default) for classes that set the `margin` or `padding` to `$spacer-x` or `$spacer-y` +* `2` - (by default) for classes that set the `margin` or `padding` to `$spacer-x * 1.5` or `$spacer-y * 1.5` +* `3` - (by default) for classes that set the `margin` or `padding` to `$spacer-x * 3` or `$spacer-y * 3` + +Here are some representative examples of these classes: +```scss +.m-t-0 { + margin-top: 0 !important; +} + +.m-l-1 { + margin-left: $spacer-x !important; +} + +.p-x-2 { + padding-left: ($spacer-x * 1.5) !important; + padding-right: ($spacer-x * 1.5) !important; +} + +.p-a-3 { + padding: ($spacer-y * 3) ($spacer-x * 3) !important; +} +``` + +Additionally, Bootstrap also includes an `.m-x-auto` class which sets the horizontal margins to `auto`. + + +## Text alignment + +Easily realign text to components with text alignment classes. + +{% example html %} +Justified text. +No wrap text. +{% endexample %} + +For left, right, and center alignment, responsive classes are available that use the same viewport width breakpoints as the grid system. + +{% example html %} +Left aligned text on all viewport sizes. +Center aligned text on all viewport sizes. +Right aligned text on all viewport sizes. + +Left aligned text on viewports sized SM (small) or wider. +Left aligned text on viewports sized MD (medium) or wider. +Left aligned text on viewports sized LG (large) or wider. +Left aligned text on viewports sized XL (extra-large) or wider. +{% endexample %} + +## Text transform + +Transform text in components with text capitalization classes. + +{% example html %} +Lowercased text. +Uppercased text. +CapiTaliZed text. +{% endexample %} + +## Font weight and italics + +Quickly change the weight (boldness) of text or italicize text. + +{% example html %} +Bold text. +Normal weight text. +Italicized text. +{% endexample %} + +## Contextual colors and backgrounds + +Convey meaning through color with a handful of emphasis utility classes. These may also be applied to links and will darken on hover just like our default link styles. + +{% example html %} +Fusce dapibus, tellus ac cursus commodo, tortor mauris nibh. +Nullam id dolor id nibh ultricies vehicula ut id elit. +Duis mollis, est non commodo luctus, nisi erat porttitor ligula. +Maecenas sed diam eget risus varius blandit sit amet non magna. +Etiam porta sem malesuada magna mollis euismod. +Donec ullamcorper nulla non metus auctor fringilla. +{% endexample %} + +Contextual text classes also work well on anchors with the provided hover and focus states. + +{% example html %} +Muted link +Primary link +Success link +Info link +Warning link +Danger link +{% endexample %} + +Similar to the contextual text color classes, easily set the background of an element to any contextual class. Anchor components will darken on hover, just like the text classes. + +{% example html %} +Nullam id dolor id nibh ultricies vehicula ut id elit. +Duis mollis, est non commodo luctus, nisi erat porttitor ligula. +Maecenas sed diam eget risus varius blandit sit amet non magna. +Etiam porta sem malesuada magna mollis euismod. +Donec ullamcorper nulla non metus auctor fringilla. +Cras mattis consectetur purus sit amet fermentum. +{% endexample %} + +{% callout info %} +#### Dealing with specificity + +Sometimes contextual classes cannot be applied due to the specificity of another selector. In some cases, a sufficient workaround is to wrap your element's content in a `` with the class. +{% endcallout %} + +{% callout warning %} +#### Conveying meaning to assistive technologies + +Ensure that any meaning conveyed through color is also conveyed in a format that is not purely presentational. +{% endcallout %} + +## Close icon + +Use a generic close icon for dismissing content like modals and alerts. **Be sure to include text for screen readers**, as we've done with `aria-label`. + +{% example html %} + + × + +{% endexample %} + +## Responsive floats + +These utility classes float an element to the left or right, or disable floating, based on the current viewport size using the [CSS `float` property](https://developer.mozilla.org/en-US/docs/Web/CSS/float). `!important` is included to avoid specificity issues. These use the same viewport width breakpoints as the grid system. + +Two similar non-responsive mixins (`pull-left` and `pull-right`) are also available. + +{% example html %} +Float left on all viewport sizes +Float right on all viewport sizes +Don't float on all viewport sizes + +Float left on viewports sized SM (small) or wider +Float left on viewports sized MD (medium) or wider +Float left on viewports sized LG (large) or wider +Float left on viewports sized XL (extra-large) or wider +{% endexample %} + +{% highlight scss %} +// Related simple non-responsive mixins +.element { + @include pull-left; +} +.another-element { + @include pull-right; +} +{% endhighlight %} + +## Center content + +Set an element to `display: block;` and center via `margin`. Available as a mixin and class. + +{% example html %} +Centered block +{% endexample %} + +{% highlight scss %} +// Class +.center-block { + display: block; + margin-left: auto; + margin-right: auto; +} + +// Usage as a mixin +.element { + @include center-block; +} +{% endhighlight %} + +Easily clear `float`s by adding `.clearfix` **to the parent element**. Utilizes [the micro clearfix](http://nicolasgallagher.com/micro-clearfix-hack/) as popularized by Nicolas Gallagher. Can also be used as a mixin. + +{% highlight html %} +... +{% endhighlight %} + +{% highlight scss %} +// Mixin itself +.clearfix() { + &:before, + &:after { + content: " "; + display: table; + } + &:after { + clear: both; + } +} + +// Usage as a mixin +.element { + @include clearfix; +} +{% endhighlight %} + +## Invisible content + +The `.invisible` class can be used to toggle only the visibility of an element, meaning its `display` is not modified and the element can still affect the flow of the document. + +{% highlight html %} +... +{% endhighlight %} + +{% highlight scss %} +// Class +.invisible { + visibility: hidden; +} + +// Usage as a mixin +.element { + .invisible(); +} +{% endhighlight %} + +## Screen readers and keyboard users + +Hide an element to all devices **except screen readers** with `.sr-only`. Combine `.sr-only` with `.sr-only-focusable` to show the element again when it's focused (e.g. by a keyboard-only user). Can also be used as mixins. + +{% comment %} +Necessary for following [accessibility best practices](../getting-started/#accessibility). +{% endcomment %} + +{% highlight html %} +Skip to main content +{% endhighlight %} + +{% highlight scss %} +// Usage as a mixin +.skip-navigation { + @include sr-only; + @include sr-only-focusable; +} +{% endhighlight %} + +## Image replacement + +Utilize the `.text-hide` class or mixin to help replace an element's text content with a background image. + +{% highlight html %} +Custom heading +{% endhighlight %} + +{% highlight scss %} +// Usage as a mixin +.heading { + @include text-hide; +} +{% endhighlight %} + +## Responsive embeds + +Allow browsers to determine video or slideshow dimensions based on the width of their containing block by creating an intrinsic ratio that will properly scale on any device. + +Rules are directly applied to ``, ``, ``, and `` elements; optionally use an explicit descendant class `.embed-responsive-item` when you want to match the styling for other attributes. + +**Pro-Tip!** You don't need to include `frameborder="0"` in your ``s as we override that for you. + +{% example html %} + + + +{% endexample %} + +Aspect ratios can be customized with modifier classes. + +{% highlight html %} + + + + + + + + + + + + + + + + + + + +{% endhighlight %} diff --git a/docs/content/code.md b/docs/content/code.md new file mode 100644 index 000000000..4ce1e7fa3 --- /dev/null +++ b/docs/content/code.md @@ -0,0 +1,53 @@ +--- +layout: docs +title: Code +group: content +--- + +Styles for inline code snippets and longer, multiline blocks of code. + +## Contents + +* Will be replaced with the ToC, excluding the "Contents" header +{:toc} + +## Inline code + +Wrap inline snippets of code with `code`. Be sure to escape HTML angle brackets. + +{% example html %} +For example, <section> should be wrapped as inline. +{% endexample %} + +## Preformatted text + +Or, code blocks. Use ``s for multiple lines of code. Once again, be sure to escape any angle brackets in the code for proper rendering. You may optionally add the `.pre-scrollable` class, which will set a max-height of 350px and provide a y-axis scrollbar. + +{% example html %} +<p>Sample text here...</p> +{% endexample %} + +## Variables + +For indicating variables use the `` tag. + +{% example html %} +y = mx + b +{% endexample %} + +## User input + +Use the `` to indicate input that is typically entered via keyboard. + +{% example html %} +To switch directories, type cd followed by the name of the directory. +To edit settings, press ctrl + , +{% endexample %} + +## Sample output + +For indicating blocks sample output from a program use the `` tag. + +{% example html %} +This text is meant to be treated as sample output from a computer program. +{% endexample %} diff --git a/docs/content/figures.md b/docs/content/figures.md new file mode 100644 index 000000000..d57270518 --- /dev/null +++ b/docs/content/figures.md @@ -0,0 +1,25 @@ +--- +layout: docs +title: Figures +group: content +--- + +Anytime you need to display a piece of content—like an image—with an optional caption, consider using a ``. + +Use the included `.figure` , `.figure-img` and `.figure-caption` classes to provide some baseline styles for the HTML5 `` and `` elements. Images in figures have no explicit size, so be sure to add the `.img-fluid` class to your `` to make it responsive. + +{% example html %} + + + A caption for the above image. + +{% endexample %} + +Aligning the figure's caption is easy with our [text utilities]({{ site.baseurl }}/components/utilities/#text-alignment). + +{% example html %} + + + A caption for the above image. + +{% endexample %} diff --git a/docs/content/images.md b/docs/content/images.md new file mode 100644 index 000000000..38a855a09 --- /dev/null +++ b/docs/content/images.md @@ -0,0 +1,80 @@ +--- +layout: docs +title: Images +group: content +--- + +Opt your images into responsive behavior (so they never become larger than their parent elements) and add lightweight styles to them—all via classes. + +## Contents + +* Will be replaced with the ToC, excluding the "Contents" header +{:toc} + +## Responsive images + +Images in Bootstrap are made responsive with `.img-fluid`. `max-width: 100%;` and `height: auto;` are applied to the image so that it scales with the parent element. + + + + + +{% highlight html %} + +{% endhighlight %} + +{% callout warning %} +#### SVG images and IE 9-10 + +In Internet Explorer 9-10, SVG images with `.img-fluid` are disproportionately sized. To fix this, add `width: 100% \9;` where necessary. This fix improperly sizes other image formats, so Bootstrap doesn't apply it automatically. +{% endcallout %} + +## Image shapes + +Add classes to an `` element to easily style images in any project. + + + + + + + +{% highlight html %} + + + +{% endhighlight %} + +## Aligning images + +Align images with the [helper float classes]({{ site.baseurl }}/components/utilities/#floats) or [text alignment classes]({{ site.baseurl }}/components/utilities/#text-alignment). A simple centering class can also be used for `block` level images. + + + + + + +{% highlight html %} + + +{% endhighlight %} + + + + + +{% highlight html %} + +{% endhighlight %} + + + + + + + +{% highlight html %} + + + +{% endhighlight %} diff --git a/docs/content/reboot.md b/docs/content/reboot.md new file mode 100644 index 000000000..9631a86b6 --- /dev/null +++ b/docs/content/reboot.md @@ -0,0 +1,317 @@ +--- +layout: docs +title: Reboot +group: content +redirect_from: "/content/" +--- + +Part of Bootstrap's job is to provide an elegant, consistent, and simple baseline to build upon. We use Reboot, a collection of element-specific CSS changes in a single file, to kickstart that. + +Reboot builds upon Normalize, providing many HTML elements with somewhat opinionated styles using only element selectors. Additional styling is done only with classes. For example, we reboot some `` styles for a simpler baseline and later provide `.table`, `.table-bordered`, and more. + +## Contents + +* Will be replaced with the ToC, excluding the "Contents" header +{:toc} + +## Approach + +Here are our guidelines and reasons for choosing what to override in Reboot: + +- Update some browser default values to use `rem`s instead of `em`s for scalable component spacing. +- Avoid `margin-top`. Vertical margins can collapse, yielding unexpected results. More importantly though, a single direction of `margin` is a simpler mental model. +- For easier scaling across device sizes, block elements should use `rem`s for `margin`s. +- Keep declarations of `font`-related properties to a minimum, using `inherit` whenever possible. + +## Page defaults + +The `` and `` elements are updated to provide better page-wide defaults. More specifically: + +- The `box-sizing` is globally set on every element—including `*:before` and `*:after`, to `border-box`. This ensures that the declared width of element is never exceeded due to padding or border. +- A base `font-size: 16px` is declared on the `` and `font-size: 1rem` on the `` for easy responsive type-scaling via media queryies. +- The `` also sets a global `font-family` and `line-height`. This is inherited later by some form elements to prevent font inconsistencies. +- For safety, the `` has a declared `background-color`, defaulting to `#fff`. + +## Headings and paragraphs + +All heading elements—e.g., ``—and `` are reset to have their `margin-top` removed. Headings have `margin-bottom: .5rem` added and paragraphs `margin-bottom: 1rem` for easy spacing. + + +{% markdown %} +# h1 heading +Curabitur blandit tempus porttitor. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. + +## h2 heading +Curabitur blandit tempus porttitor. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. + +### h3 heading +Curabitur blandit tempus porttitor. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. + +#### h4 heading +Curabitur blandit tempus porttitor. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. + +##### h5 heading +Curabitur blandit tempus porttitor. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. + +###### h6 heading +Curabitur blandit tempus porttitor. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. +{% endmarkdown %} + + +## Lists + +All lists—``, ``, and ``—have their `margin-top` removed and a `margin-bottom: 1rem`. Nested lists have no `margin-bottom`. + + +{% markdown %} +* Lorem ipsum dolor sit amet +* Consectetur adipiscing elit +* Integer molestie lorem at massa +* Facilisis in pretium nisl aliquet +* Nulla volutpat aliquam velit + * Phasellus iaculis neque + * Purus sodales ultricies + * Vestibulum laoreet porttitor sem + * Ac tristique libero volutpat at +* Faucibus porta lacus fringilla vel +* Aenean sit amet erat nunc +* Eget porttitor lorem + +1. Lorem ipsum dolor sit amet +2. Consectetur adipiscing elit +3. Integer molestie lorem at massa +4. Facilisis in pretium nisl aliquet +5. Nulla volutpat aliquam velit +6. Faucibus porta lacus fringilla vel +7. Aenean sit amet erat nunc +8. Eget porttitor lorem +{% endmarkdown %} + + +For simpler styling, clear hierarchy, and better spacing, description lists have updated `margin`s. ``s reset `margin-left` to `0` and add `margin-bottom: .5rem`. ``s are **bolded**. + + +{% markdown %} + + Description lists + A description list is perfect for defining terms. + Euismod + Vestibulum id ligula porta felis euismod semper eget lacinia odio sem. + Donec id elit non mi porta gravida at eget metus. + Malesuada porta + Etiam porta sem malesuada magna mollis euismod. + +{% endmarkdown %} + + +## Preformatted text + +The `` element is reset to remove its `margin-top` and use `rem` units for its `margin-bottom`. + + +{% markdown %} + +.example-element { + margin-bottom: 1rem; +} + +{% endmarkdown %} + + +## Tables + +Tables are slightly adjusted to style ``s and ensure consistent `text-align` throughout. Additional changes for borders, padding, and more come with [the `.table` class]({{ site.baseurl }}/content/tables/). + + + + + This is an example table, and this is its caption to describe the contents. + + + + Table heading + Table heading + Table heading + Table heading + + + + + Table cell + Table cell + Table cell + Table cell + + + Table cell + Table cell + Table cell + Table cell + + + Table cell + Table cell + Table cell + Table cell + + + + + +## Forms + +Various form elements have been rebooted for simpler base styles. Here are some of the most notable changes: + +- ``s have no borders, padding, or margin so they can be easily used as wrappers for individual inputs or groups of inputs. +- ``s, like fieldsets, have also been restyled to be displayed as a heading of sorts. +- ``s are set to `display: inline-block` to allow `margin` to be applied. +- ``s, ``s, ``s, and ``s are mostly addressed by Normalize, but Reboot removes their `margin` and sets `line-height: inherit`, too. +- ``s are modified to only be resizable vertically as horizontal resizing often "breaks" page layout. + +These changes, and more, are demonstrated below. + + + + Example legend + + + Example input + + + + + Example select + + Choose... + + Option 1 + Option 2 + Option 3 + + + Option 4 + Option 5 + Option 6 + + + + + + + + Check this checkbox + + + + + + + Option one is this and that + + + + Option two is something else that's also super long to demonstrate the wrapping of these fancy form controls. + + + + Option three is disabled + + + + + Example textarea + + + + + Example temporal + + + + + Example output + 100 + + + + Button submit + + + + + + Button submit + + + + + + +## Misc elements + +### Address + +The `` element is updated to reset the browser default `font-style` from `italic` to `normal`. `line-height` is also now inherited, and `margin-bottom: 1rem` has been added. ``s are for presenting contact information for the nearest ancestor (or an entire body of work). Preserve formatting by ending lines with ``. + + + + Twitter, Inc. + 1355 Market St, Suite 900 + San Francisco, CA 94103 + P: (123) 456-7890 + + + + Full Name + first.last@example.com + + + +### Blockquote + +The default `margin` on blockquotes is `1em 40px`, so we reset that to `0 0 1rem` for something more consistent with other elements. + + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante. + + + + +### Inline elements + +The `` element receives basic styling to make it stand out amongst paragraph text. + + + Nulla attr vitae elit libero, a pharetra augue. + + +## HTML5 `[hidden]` attribute + +HTML5 adds [a new global attribute named `[hidden]`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/hidden), which is styled as `display: none` by default. Borrowing an idea from [PureCSS](http://purecss.io), we improve upon this default by making `[hidden] { display: none !important; }` to help prevent its `display` from getting accidentally overridden. While `[hidden]` isn't natively supported by IE9-10, the explicit declaration in our CSS gets around that problem. + +{% highlight html %} + +{% endhighlight %} + +{% callout warning %} +#### jQuery incompatibility + +`[hidden]` is not compatible with jQuery's `$(...).hide()` and `$(...).show()` methods. This could potentially change in jQuery 3, but we're not holding our breath. Therefore, we don't currently especially endorse `[hidden]` over other techniques for managing the `display` of elements. +{% endcallout %} + +To merely toggle the visibility of an element, meaning its `display` is not modified and the element can still affect the flow of the document, use [the `.invisible` class]({{ site.baseurl }}/components/utilities/#invisible-content) instead. + +## Click delay optimization for touch + +Traditionally, browsers on touchscreen devices have a delay of approximately 300ms between the end of a "tap" – the moment when a finger/stylus is lifted from screen – and the [`click` event](https://developer.mozilla.org/en-US/docs/Web/Events/click) being fired. This delay is necessary for these browsers to correctly handle "double-tap to zoom" gestures without prematurely triggering actions or links after the first "tap", but it can make your site feel slightly sluggish and unresponsive. + +Most mobile browsers automatically optimize away this 300ms delay for sites that use the `width=device-width` property as part of their [responsive meta tag]({{ site.baseurl }}/getting-started/introduction/#responsive-meta-tag) (as well as for sites that disable zooming, for instance with `user-scalable=no`, though this practice is strongly discouraged for accessibility and usability reasons). The biggest exceptions here are currently iOS Safari (and any other iOS WebView-based browser) – though this is likely to change in iOS 10, see [WebKit bug #150604](https://bugs.webkit.org/show_bug.cgi?id=150604) – and IE11 on Windows Phone 8.1. + +On touch-enabled laptop/desktop devices, IE11 and Microsoft Edge are currently the only browsers with "double-tap to zoom" functionality. As the [responsive meta tag]({{ site.baseurl }}/getting-started/introduction/#responsive-meta-tag) is ignored by all desktop browsers, using `width=device-width` will have no effect on the 300ms delay here. + +To address this problem in IE11 and Microsoft Edge on desktop, as well as IE11 on Windows Phone 8.1, Bootstrap explicitly uses the [`touch-action:manipulation` CSS property](https://developer.mozilla.org/en-US/docs/Web/CSS/touch-action) on all interactive elements (such as buttons and links). This property essentially disables double-tap functionality on those elements, eliminating the 300ms delay. + +In the case of iOS, the currently suggested approach is to use additional scripts such as [FastClick](https://github.com/ftlabs/fastclick) to explicitly work around the delay. + +For further details, see the compatibility table for [suppressing 300ms delay for touchscreen interactions](http://patrickhlauke.github.io/touch/tests/results/#suppressing-300ms-delay). diff --git a/docs/content/tables.md b/docs/content/tables.md new file mode 100644 index 000000000..80bbbf854 --- /dev/null +++ b/docs/content/tables.md @@ -0,0 +1,611 @@ +--- +layout: docs +title: Tables +group: content +--- + +Due to the widespread use of tables across third-party widgets like calendars and date pickers, we've designed our tables to be **opt-in**. Just add the base class `.table` to any ``. + +## Contents + +* Will be replaced with the ToC, excluding the "Contents" header +{:toc} + +## Basic example + +{% example html %} + + + + # + First Name + Last Name + Username + + + + + 1 + Mark + Otto + @mdo + + + 2 + Jacob + Thornton + @fat + + + 3 + Larry + the Bird + @twitter + + + +{% endexample %} + +## Inverse table + +{% example html %} + + + + # + First Name + Last Name + Username + + + + + 1 + Mark + Otto + @mdo + + + 2 + Jacob + Thornton + @fat + + + 3 + Larry + the Bird + @twitter + + + +{% endexample %} + +## Table head options + +Use one of two modifier classes to make ``s appear light or dark gray. + +{% example html %} + + + + # + First Name + Last Name + Username + + + + + 1 + Mark + Otto + @mdo + + + 2 + Jacob + Thornton + @fat + + + 3 + Larry + the Bird + @twitter + + + + + + + + # + First Name + Last Name + Username + + + + + 1 + Mark + Otto + @mdo + + + 2 + Jacob + Thornton + @fat + + + 3 + Larry + the Bird + @twitter + + + +{% endexample %} + +## Striped rows + +Use `.table-striped` to add zebra-striping to any table row within the ``. + +{% example html %} + + + + # + First Name + Last Name + Username + + + + + 1 + Mark + Otto + @mdo + + + 2 + Jacob + Thornton + @fat + + + 3 + Larry + the Bird + @twitter + + + +{% endexample %} + +## Bordered table + +Add `.table-bordered` for borders on all sides of the table and cells. + +{% example html %} + + + + # + First Name + Last Name + Username + + + + + 1 + Mark + Otto + @mdo + + + 2 + Mark + Otto + @TwBootstrap + + + 3 + Jacob + Thornton + @fat + + + 4 + Larry the Bird + @twitter + + + +{% endexample %} + +## Hoverable rows + +Add `.table-hover` to enable a hover state on table rows within a ``. + +{% example html %} + + + + # + First Name + Last Name + Username + + + + + 1 + Mark + Otto + @mdo + + + 2 + Jacob + Thornton + @fat + + + 3 + Larry the Bird + @twitter + + + +{% endexample %} + +## Small table + +Add `.table-sm` to make tables more compact by cutting cell padding in half. + +{% example html %} + + + + # + First Name + Last Name + Username + + + + + 1 + Mark + Otto + @mdo + + + 2 + Jacob + Thornton + @fat + + + 3 + Larry the Bird + @twitter + + + +{% endexample %} + +## Contextual classes + +Use contextual classes to color table rows or individual cells. + + + + + + + + + + Class + Description + + + + + + .table-active + + Applies the hover color to a particular row or cell + + + + .table-success + + Indicates a successful or positive action + + + + .table-info + + Indicates a neutral informative change or action + + + + .table-warning + + Indicates a warning that might need attention + + + + .table-danger + + Indicates a dangerous or potentially negative action + + + + + + + + + + # + Column heading + Column heading + Column heading + + + + + 1 + Column content + Column content + Column content + + + 2 + Column content + Column content + Column content + + + 3 + Column content + Column content + Column content + + + 4 + Column content + Column content + Column content + + + 5 + Column content + Column content + Column content + + + 6 + Column content + Column content + Column content + + + 7 + Column content + Column content + Column content + + + 8 + Column content + Column content + Column content + + + 9 + Column content + Column content + Column content + + + + + +{% highlight html %} + +... +... +... +... +... + + + + ... + ... + ... + ... + ... + +{% endhighlight %} + +## Responsive tables + +Create responsive tables by wrapping any `.table` in `.table-responsive` to make them scroll horizontally on small devices (under 768px). When viewing on anything larger than 768px wide, you will not see any difference in these tables. + +{% callout warning %} +#### Vertical clipping/truncation + +Responsive tables make use of `overflow-y: hidden`, which clips off any content that goes beyond the bottom or top edges of the table. In particular, this can clip off dropdown menus and other third-party widgets. +{% endcallout %} + +{% callout warning %} +#### Firefox and fieldsets + +Firefox has some awkward fieldset styling involving `width` that interferes with the responsive table. This cannot be overridden without a Firefox-specific hack that we **don't** provide in Bootstrap: + +{% highlight css %} +@-moz-document url-prefix() { + fieldset { display: table-cell; } +} +{% endhighlight %} + +For more information, read [this Stack Overflow answer](https://stackoverflow.com/questions/17408815/fieldset-resizes-wrong-appears-to-have-unremovable-min-width-min-content/17863685#17863685). +{% endcallout %} + + + + + + + # + Table heading + Table heading + Table heading + Table heading + Table heading + Table heading + + + + + 1 + Table cell + Table cell + Table cell + Table cell + Table cell + Table cell + + + 2 + Table cell + Table cell + Table cell + Table cell + Table cell + Table cell + + + 3 + Table cell + Table cell + Table cell + Table cell + Table cell + Table cell + + + + + + + + + + # + Table heading + Table heading + Table heading + Table heading + Table heading + Table heading + + + + + 1 + Table cell + Table cell + Table cell + Table cell + Table cell + Table cell + + + 2 + Table cell + Table cell + Table cell + Table cell + Table cell + Table cell + + + 3 + Table cell + Table cell + Table cell + Table cell + Table cell + Table cell + + + + + + +{% highlight html %} + + + ... + + +{% endhighlight %} + + +### Reflow + +{% example html %} + + + + # + Table heading + Table heading + Table heading + Table heading + Table heading + Table heading + + + + + 1 + Table cell + Table cell + Table cell + Table cell + Table cell + Table cell + + + 2 + Table cell + Table cell + Table cell + Table cell + Table cell + Table cell + + + 3 + Table cell + Table cell + Table cell + Table cell + Table cell + Table cell + + + +{% endexample %} diff --git a/docs/content/typography.md b/docs/content/typography.md new file mode 100644 index 000000000..651e2c49c --- /dev/null +++ b/docs/content/typography.md @@ -0,0 +1,267 @@ +--- +layout: docs +title: Typography +group: content +--- + +Bootstrap includes simple and easily customized typography for headings, body text, lists, and more. For even more control, check out the [textual utility classes]({{ site.baseurl }}/components/utilities/). + +## Contents + +* Will be replaced with the ToC, excluding the "Contents" header +{:toc} + +## Global settings + +Bootstrap sets basic global display, typography, and link styles. Specifically, we: + +- Use `$body-bg` to set a `background-color` on the `` (`#fff` by default) +- Use the `$font-family-base`, `$font-size-base`, and `$line-height-base` attributes as our typographic base +- Set the global link color via `$link-color` and apply link underlines only on `:hover` + +These styles can be found within `_reboot.scss`, and the global variables are defined in `_variables.scss`. + + +## Headings + +All HTML headings, `` through ``, are available. `.h1` through `.h6` classes are also available, for when you want to match the font styling of a heading but still want your text to be displayed inline. + + + + + + h1. Bootstrap heading + Semibold 36px + + + h2. Bootstrap heading + Semibold 30px + + + h3. Bootstrap heading + Semibold 24px + + + h4. Bootstrap heading + Semibold 18px + + + h5. Bootstrap heading + Semibold 14px + + + h6. Bootstrap heading + Semibold 12px + + + + + +{% highlight html %} +h1. Bootstrap heading +h2. Bootstrap heading +h3. Bootstrap heading +h4. Bootstrap heading +h5. Bootstrap heading +h6. Bootstrap heading +{% endhighlight %} + +### Customizing headings + +Use the included utility classes to recreate the small secondary heading text from Bootstrap 3. + +{% example html %} + + Fancy display heading + With faded secondary text + +{% endexample %} + +## Display headings + +Traditional heading elements are designed to work best in the meat of your page content. When you need a heading to stand out, consider using a **display heading**—a larger, slightly more opinionated heading style. + + + + + + Display 1 + + + Display 2 + + + Display 3 + + + Display 4 + + + + + +{% highlight html %} +Display 1 +Display 2 +Display 3 +Display 4 +{% endhighlight %} + +## Lead + +Make a paragraph stand out by adding `.lead`. + +{% example html %} + + Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Duis mollis, est non commodo luctus. + +{% endexample %} + +## Inline text elements + +Styling for common inline HTML5 elements. + +{% example html %} +You can use the mark tag to highlight text. +This line of text is meant to be treated as deleted text. +This line of text is meant to be treated as no longer accurate. +This line of text is meant to be treated as an addition to the document. +This line of text will render as underlined +This line of text is meant to be treated as fine print. +This line rendered as bold text. +This line rendered as italicized text. +{% endexample %} + +While not shown above, feel free to use `` and `` in HTML5. `` is meant to highlight words or phrases without conveying additional importance while `` is mostly for voice, technical terms, etc. + +## Abbreviations + +Stylized implementation of HTML's `` element for abbreviations and acronyms to show the expanded version on hover. Abbreviations with a `title` attribute have a light dotted bottom border and a help cursor on hover, providing additional context on hover and to users of assistive technologies. + +Add `.initialism` to an abbreviation for a slightly smaller font-size. + +{% example html %} +attr +HTML +{% endexample %} + +## Blockquotes + +For quoting blocks of content from another source within your document. Wrap `` around any HTML as the quote. + +{% example html %} + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante. + +{% endexample %} + +### Naming a source + +Add a `
\n*/,'') + code = code.sub(/\n*<\/pre>/,"") + code.strip + end + + end + end +end + +Liquid::Template.register_tag('example', Jekyll::Tags::ExampleBlock) diff --git a/docs/_plugins/markdown-block.rb b/docs/_plugins/markdown-block.rb new file mode 100644 index 000000000..f9f1531b5 --- /dev/null +++ b/docs/_plugins/markdown-block.rb @@ -0,0 +1,20 @@ +module Jekyll + class MarkdownBlock < Liquid::Block + alias_method :render_block, :render + + def initialize(tag_name, markup, tokens) + super + end + + # Uses the default Jekyll markdown parser to + # parse the contents of this block + # + def render(context) + site = context.registers[:site] + converter = site.find_converter_instance(::Jekyll::Converters::Markdown) + converter.convert(render_block(context)) + end + end +end + +Liquid::Template.register_tag('markdown', Jekyll::MarkdownBlock) diff --git a/docs/about/brand.md b/docs/about/brand.md new file mode 100644 index 000000000..fcb8804ae --- /dev/null +++ b/docs/about/brand.md @@ -0,0 +1,76 @@ +--- +layout: docs +title: Brand guidelines +group: about +--- + +Have a need for Bootstrap's brand resources? Great! We have only a few guidelines we follow, and in turn ask you to follow as well. These guidelines were inspired by MailChimp's [Brand Assets](http://mailchimp.com/about/brand-assets/). + +## Mark and logo + +Use either the Bootstrap mark (a capital **B**) or the standard logo (just **Bootstrap**). It should always appear in Helvetica Neue Bold. **Do not use the Twitter bird** in association with Bootstrap. + + + + B + + + B + + + + + Bootstrap + + + Bootstrap + + + +## Download mark + +Download the Bootstrap mark in one of three styles, each available as an SVG file. Right click, Save as. + + + + + + + + + + + + + +## Name + +The project and framework should always be referred to as **Bootstrap**. No Twitter before it, no capital _s_, and no abbreviations except for one, a capital **B**. + + + + Bootstrap + Right + + + BootStrap + Wrong + + + Twitter Bootstrap + Wrong + + + +## Colors + +Our docs and branding use a handful of primary colors to differentiate what *is* Bootstrap from what *is in* Bootstrap. In other words, if it's purple, it's representative of Bootstrap. + + + + + + + + + diff --git a/docs/about/history.md b/docs/about/history.md new file mode 100644 index 000000000..ae4764ee7 --- /dev/null +++ b/docs/about/history.md @@ -0,0 +1,12 @@ +--- +layout: docs +title: History +group: about +redirect_from: "/about/" +--- + +Originally created by a designer and a developer at Twitter, Bootstrap has become one of the most popular front-end frameworks and open source projects in the world. + +Bootstrap was created at Twitter in mid-2010 by [@mdo](https://twitter.com/mdo) and [@fat](https://twitter.com/fat). Prior to being an open-sourced framework, Bootstrap was known as _Twitter Blueprint_. A few months into development, Twitter held its [first Hack Week](https://blog.twitter.com/2010/hack-week) and the project exploded as developers of all skill levels jumped in without any external guidance. It served as the style guide for internal tools development at the company for over a year before its public release, and continues to do so today. + +Originally [released](https://blog.twitter.com/2011/bootstrap-twitter) on [Friday, August 19, 2011](https://twitter.com/mdo/statuses/104620039650557952), we've since had over [twenty releases](https://github.com/twbs/bootstrap/releases), including two major rewrites with v2 and v3. With Bootstrap 2, we added responsive functionality to the entire framework as an optional stylesheet. Building on that with Bootstrap 3, we rewrote the library once more to make it responsive by default with a mobile first approach. diff --git a/site/content/docs/5.0/about/license.md b/docs/about/license.md similarity index 71% rename from site/content/docs/5.0/about/license.md rename to docs/about/license.md index 07e60e00a..997b1c9ef 100644 --- a/site/content/docs/5.0/about/license.md +++ b/docs/about/license.md @@ -1,24 +1,23 @@ --- layout: docs title: License FAQs -description: Commonly asked questions about Bootstrap's open source license. group: about --- -Bootstrap is released under the MIT license and is copyright {{< year >}} Twitter. Boiled down to smaller chunks, it can be described with the following conditions. +Bootstrap is released under the MIT license and is copyright {{ site.time | date: "%Y" }} Twitter. Boiled down to smaller chunks, it can be described with the following conditions. -## It requires you to: +#### It requires you to: -- Keep the license and copyright notice included in Bootstrap's CSS and JavaScript files when you use them in your works +* Keep the license and copyright notice included in Bootstrap's CSS and JavaScript files when you use them in your works -## It permits you to: +#### It permits you to: - Freely download and use Bootstrap, in whole or in part, for personal, private, company internal, or commercial purposes - Use Bootstrap in packages or distributions that you create - Modify the source code - Grant a sublicense to modify and distribute Bootstrap to third parties not included in the license -## It forbids you to: +#### It forbids you to: - Hold the authors and license owners liable for damages as Bootstrap is provided without warranty - Hold the creators or copyright holders of Bootstrap liable @@ -26,9 +25,9 @@ Bootstrap is released under the MIT license and is copyright {{< year >}} Twitte - Use any marks owned by Twitter in any way that might state or imply that Twitter endorses your distribution - Use any marks owned by Twitter in any way that might state or imply that you created the Twitter software in question -## It does not require you to: +#### It does not require you to: - Include the source of Bootstrap itself, or of any modifications you may have made to it, in any redistribution you may assemble that includes it - Submit changes that you make to Bootstrap back to the Bootstrap project (though such feedback is encouraged) -The full Bootstrap license is located [in the project repository]({{< param repo >}}/blob/v{{< param current_version >}}/LICENSE) for more information. +The full Bootstrap license is located [in the project repository]({{ site.repo }}/blob/master/LICENSE) for more information. diff --git a/docs/about/team.md b/docs/about/team.md new file mode 100644 index 000000000..2492471cf --- /dev/null +++ b/docs/about/team.md @@ -0,0 +1,21 @@ +--- +layout: docs +title: Team +group: about +--- + +Bootstrap is maintained by the founding team and a small group of invaluable core contributors, with the massive support and involvement of our community. + + + {% for member in site.data.core-team %} + + + + + {{ member.name }} @{{ member.user }} + + + {% endfor %} + + +Get involved with Bootstrap development by [opening an issue](https://github.com/twbs/bootstrap/issues/new) or submitting a pull request. Read our [contributing guidelines](https://github.com/twbs/bootstrap/blob/master/CONTRIBUTING.md) for information on how we develop. diff --git a/site/content/docs/5.0/about/translations.md b/docs/about/translations.md similarity index 57% rename from site/content/docs/5.0/about/translations.md rename to docs/about/translations.md index e719e3a84..de6519bb3 100644 --- a/site/content/docs/5.0/about/translations.md +++ b/docs/about/translations.md @@ -1,19 +1,16 @@ --- layout: docs title: Translations -description: Links to community-translated Bootstrap documentation sites. group: about --- Community members have translated Bootstrap's documentation into various languages. None are officially supported and they may not always be up to date. -{{< translations.inline >}}
') + code = code.sub(/\n*<\/pre>/,"
event.target
event.relatedTarget
Sed posuere consectetur est at lobortis. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum.
Appends the popover to a specific element. Example: container: 'body'. This option is particularly useful in that it allows you to position the popover in the flow of the document near the triggering element - which will prevent the popover from floating away from the triggering element during a window resize.
container: 'body'
Default content value if data-content attribute isn't present.
data-content
If a function is given, it will be called with its this reference set to the element that the popover is attached to.
this
Delay showing and hiding the popover (ms) - does not apply to manual trigger type
If a number is supplied, delay is applied to both hide/show
Object structure is: delay: { "show": 500, "hide": 100 }
delay: { "show": 500, "hide": 100 }
text
How to position the popover - top | bottom | left | right | auto.When "auto" is specified, it will dynamically reorient the popover. For example, if placement is "auto left", the popover will display to the left when possible, otherwise it will display right.
When a function is used to determine the placement, it is called with the popover DOM node as its first argument and the triggering element DOM node as its second. The this context is set to the popover instance.
'<div class="popover" role="tooltip"><div class="popover-arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'
Base HTML to use when creating the popover.
The popover's title will be injected into the .popover-title.
title
.popover-title
The popover's content will be injected into the .popover-content.
content
.popover-content
.popover-arrow will become the popover's arrow.
.popover-arrow
The outermost wrapper element should have the .popover class.
.popover
Default title value if title attribute isn't present.
show
hide
Ad leggings keytar, brunch id art party dolor labore. Pitchfork yr enim lo-fi before they sold out qui. Tumblr farm-to-table bicycle rights whatever. Anim keffiyeh carles cardigan. Velit seitan mcsweeney's photo booth 3 wolf moon irure. Cosby sweater lomo jean shorts, williamsburg hoodie minim qui you probably haven't heard of them et cardigan trust fund culpa biodiesel wes anderson aesthetic. Nihil tattooed accusamus, cred irony biodiesel keffiyeh artisan ullamco consequat.
Veniam marfa mustache skateboard, adipisicing fugiat velit pitchfork beard. Freegan beard aliqua cupidatat mcsweeney's vero. Cupidatat four loko nisi, ea helvetica nulla carles. Tattooed cosby sweater food truck, mcsweeney's quis non freegan vinyl. Lo-fi wes anderson +1 sartorial. Carles non aesthetic exercitation quis gentrify. Brooklyn adipisicing craft beer vice keytar deserunt.
Occaecat commodo aliqua delectus. Fap craft beer deserunt skateboard ea. Lomo bicycle rights adipisicing banh mi, velit ea sunt next level locavore single-origin coffee in magna veniam. High life id vinyl, echo park consequat quis aliquip banh mi pitchfork. Vero VHS est adipisicing. Consectetur nisi DIY minim messenger bag. Cred ex in, sustainable delectus consectetur fanny pack iphone.
In incididunt echo park, officia deserunt mcsweeney's proident master cleanse thundercats sapiente veniam. Excepteur VHS elit, proident shoreditch +1 biodiesel laborum craft beer. Single-origin coffee wayfarers irure four loko, cupidatat terry richardson master cleanse. Assumenda you probably haven't heard of them art party fanny pack, tattooed nulla cardigan tempor ad. Proident wolf nesciunt sartorial keffiyeh eu banh mi sustainable. Elit wolf voluptate, lo-fi ea portland before they sold out four loko. Locavore enim nostrud mlkshk brooklyn nesciunt.
Keytar twee blog, culpa messenger bag marfa whatever delectus food truck. Sapiente synth id assumenda. Locavore sed helvetica cliche irony, thundercats you probably haven't heard of them consequat hoodie gluten-free lo-fi fap aliquip. Labore elit placeat before they sold out, terry richardson proident brunch nesciunt quis cosby sweater pariatur keffiyeh ut helvetica artisan. Cardigan craft beer seitan readymade velit. VHS chambray laboris tempor veniam. Anim mollit minim commodo ullamco thundercats. +
Tight pants next level keffiyeh you probably haven't heard of them. Photo booth beard raw denim letterpress vegan messenger bag stumptown. Farm-to-table seitan, mcsweeney's fixie sustainable quinoa 8-bit american apparel have a terry richardson vinyl chambray. Beard stumptown, cardigans banh mi lomo thundercats. Tofu biodiesel williamsburg marfa, four loko mcsweeney's cleanse vegan chambray. A really ironic artisan whatever keytar, scenester farm-to-table banksy Austin twitter handle freegan cred raw denim single-origin coffee viral. +
Appends the tooltip to a specific element. Example: container: 'body'. This option is particularly useful in that it allows you to position the tooltip in the flow of the document near the triggering element - which will prevent the tooltip from floating away from the triggering element during a window resize.
Delay showing and hiding the tooltip (ms) - does not apply to manual trigger type
How to position the tooltip - top | bottom | left | right | auto.When "auto" is specified, it will dynamically reorient the tooltip. For example, if placement is "auto left", the tooltip will display to the left when possible, otherwise it will display right.
When a function is used to determine the placement, it is called with the tooltip DOM node as its first argument and the triggering element DOM node as its second. The this context is set to the tooltip instance.
'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>'
Base HTML to use when creating the tooltip.
The tooltip's title will be injected into the .tooltip-inner.
.tooltip-inner
.tooltip-arrow will become the tooltip's arrow.
.tooltip-arrow
The outermost wrapper element should have the .tooltip class.
.tooltip
If a function is given, it will be called with its this reference set to the element that the tooltip is attached to.
Justified text.
No wrap text.
Left aligned text on all viewport sizes.
Center aligned text on all viewport sizes.
Right aligned text on all viewport sizes.
Left aligned text on viewports sized SM (small) or wider.
Left aligned text on viewports sized MD (medium) or wider.
Left aligned text on viewports sized LG (large) or wider.
Left aligned text on viewports sized XL (extra-large) or wider.
Lowercased text.
Uppercased text.
CapiTaliZed text.
Bold text.
Normal weight text.
Italicized text.
Fusce dapibus, tellus ac cursus commodo, tortor mauris nibh.
Nullam id dolor id nibh ultricies vehicula ut id elit.
Duis mollis, est non commodo luctus, nisi erat porttitor ligula.
Maecenas sed diam eget risus varius blandit sit amet non magna.
Etiam porta sem malesuada magna mollis euismod.
Donec ullamcorper nulla non metus auctor fringilla.
<section>
`s for multiple lines of code. Once again, be sure to escape any angle brackets in the code for proper rendering. You may optionally add the `.pre-scrollable` class, which will set a max-height of 350px and provide a y-axis scrollbar. + +{% example html %} +<p>Sample text here...</p> +{% endexample %} + +## Variables + +For indicating variables use the `` tag. + +{% example html %} +y = mx + b +{% endexample %} + +## User input + +Use the `` to indicate input that is typically entered via keyboard. + +{% example html %} +To switch directories, type cd followed by the name of the directory. +To edit settings, press ctrl + , +{% endexample %} + +## Sample output + +For indicating blocks sample output from a program use the `` tag. + +{% example html %} +This text is meant to be treated as sample output from a computer program. +{% endexample %} diff --git a/docs/content/figures.md b/docs/content/figures.md new file mode 100644 index 000000000..d57270518 --- /dev/null +++ b/docs/content/figures.md @@ -0,0 +1,25 @@ +--- +layout: docs +title: Figures +group: content +--- + +Anytime you need to display a piece of content—like an image—with an optional caption, consider using a ``. + +Use the included `.figure` , `.figure-img` and `.figure-caption` classes to provide some baseline styles for the HTML5 `` and `` elements. Images in figures have no explicit size, so be sure to add the `.img-fluid` class to your `` to make it responsive. + +{% example html %} + + + A caption for the above image. + +{% endexample %} + +Aligning the figure's caption is easy with our [text utilities]({{ site.baseurl }}/components/utilities/#text-alignment). + +{% example html %} + + + A caption for the above image. + +{% endexample %} diff --git a/docs/content/images.md b/docs/content/images.md new file mode 100644 index 000000000..38a855a09 --- /dev/null +++ b/docs/content/images.md @@ -0,0 +1,80 @@ +--- +layout: docs +title: Images +group: content +--- + +Opt your images into responsive behavior (so they never become larger than their parent elements) and add lightweight styles to them—all via classes. + +## Contents + +* Will be replaced with the ToC, excluding the "Contents" header +{:toc} + +## Responsive images + +Images in Bootstrap are made responsive with `.img-fluid`. `max-width: 100%;` and `height: auto;` are applied to the image so that it scales with the parent element. + + + + + +{% highlight html %} + +{% endhighlight %} + +{% callout warning %} +#### SVG images and IE 9-10 + +In Internet Explorer 9-10, SVG images with `.img-fluid` are disproportionately sized. To fix this, add `width: 100% \9;` where necessary. This fix improperly sizes other image formats, so Bootstrap doesn't apply it automatically. +{% endcallout %} + +## Image shapes + +Add classes to an `` element to easily style images in any project. + + + + + + + +{% highlight html %} + + + +{% endhighlight %} + +## Aligning images + +Align images with the [helper float classes]({{ site.baseurl }}/components/utilities/#floats) or [text alignment classes]({{ site.baseurl }}/components/utilities/#text-alignment). A simple centering class can also be used for `block` level images. + + + + + + +{% highlight html %} + + +{% endhighlight %} + + + + + +{% highlight html %} + +{% endhighlight %} + + + + + + + +{% highlight html %} + + + +{% endhighlight %} diff --git a/docs/content/reboot.md b/docs/content/reboot.md new file mode 100644 index 000000000..9631a86b6 --- /dev/null +++ b/docs/content/reboot.md @@ -0,0 +1,317 @@ +--- +layout: docs +title: Reboot +group: content +redirect_from: "/content/" +--- + +Part of Bootstrap's job is to provide an elegant, consistent, and simple baseline to build upon. We use Reboot, a collection of element-specific CSS changes in a single file, to kickstart that. + +Reboot builds upon Normalize, providing many HTML elements with somewhat opinionated styles using only element selectors. Additional styling is done only with classes. For example, we reboot some `` styles for a simpler baseline and later provide `.table`, `.table-bordered`, and more. + +## Contents + +* Will be replaced with the ToC, excluding the "Contents" header +{:toc} + +## Approach + +Here are our guidelines and reasons for choosing what to override in Reboot: + +- Update some browser default values to use `rem`s instead of `em`s for scalable component spacing. +- Avoid `margin-top`. Vertical margins can collapse, yielding unexpected results. More importantly though, a single direction of `margin` is a simpler mental model. +- For easier scaling across device sizes, block elements should use `rem`s for `margin`s. +- Keep declarations of `font`-related properties to a minimum, using `inherit` whenever possible. + +## Page defaults + +The `` and `` elements are updated to provide better page-wide defaults. More specifically: + +- The `box-sizing` is globally set on every element—including `*:before` and `*:after`, to `border-box`. This ensures that the declared width of element is never exceeded due to padding or border. +- A base `font-size: 16px` is declared on the `` and `font-size: 1rem` on the `` for easy responsive type-scaling via media queryies. +- The `` also sets a global `font-family` and `line-height`. This is inherited later by some form elements to prevent font inconsistencies. +- For safety, the `` has a declared `background-color`, defaulting to `#fff`. + +## Headings and paragraphs + +All heading elements—e.g., ``—and `` are reset to have their `margin-top` removed. Headings have `margin-bottom: .5rem` added and paragraphs `margin-bottom: 1rem` for easy spacing. + + +{% markdown %} +# h1 heading +Curabitur blandit tempus porttitor. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. + +## h2 heading +Curabitur blandit tempus porttitor. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. + +### h3 heading +Curabitur blandit tempus porttitor. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. + +#### h4 heading +Curabitur blandit tempus porttitor. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. + +##### h5 heading +Curabitur blandit tempus porttitor. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. + +###### h6 heading +Curabitur blandit tempus porttitor. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. +{% endmarkdown %} + + +## Lists + +All lists—``, ``, and ``—have their `margin-top` removed and a `margin-bottom: 1rem`. Nested lists have no `margin-bottom`. + + +{% markdown %} +* Lorem ipsum dolor sit amet +* Consectetur adipiscing elit +* Integer molestie lorem at massa +* Facilisis in pretium nisl aliquet +* Nulla volutpat aliquam velit + * Phasellus iaculis neque + * Purus sodales ultricies + * Vestibulum laoreet porttitor sem + * Ac tristique libero volutpat at +* Faucibus porta lacus fringilla vel +* Aenean sit amet erat nunc +* Eget porttitor lorem + +1. Lorem ipsum dolor sit amet +2. Consectetur adipiscing elit +3. Integer molestie lorem at massa +4. Facilisis in pretium nisl aliquet +5. Nulla volutpat aliquam velit +6. Faucibus porta lacus fringilla vel +7. Aenean sit amet erat nunc +8. Eget porttitor lorem +{% endmarkdown %} + + +For simpler styling, clear hierarchy, and better spacing, description lists have updated `margin`s. ``s reset `margin-left` to `0` and add `margin-bottom: .5rem`. ``s are **bolded**. + + +{% markdown %} + + Description lists + A description list is perfect for defining terms. + Euismod + Vestibulum id ligula porta felis euismod semper eget lacinia odio sem. + Donec id elit non mi porta gravida at eget metus. + Malesuada porta + Etiam porta sem malesuada magna mollis euismod. + +{% endmarkdown %} + + +## Preformatted text + +The `` element is reset to remove its `margin-top` and use `rem` units for its `margin-bottom`. + + +{% markdown %} + +.example-element { + margin-bottom: 1rem; +} + +{% endmarkdown %} + + +## Tables + +Tables are slightly adjusted to style ``s and ensure consistent `text-align` throughout. Additional changes for borders, padding, and more come with [the `.table` class]({{ site.baseurl }}/content/tables/). + + + + + This is an example table, and this is its caption to describe the contents. + + + + Table heading + Table heading + Table heading + Table heading + + + + + Table cell + Table cell + Table cell + Table cell + + + Table cell + Table cell + Table cell + Table cell + + + Table cell + Table cell + Table cell + Table cell + + + + + +## Forms + +Various form elements have been rebooted for simpler base styles. Here are some of the most notable changes: + +- ``s have no borders, padding, or margin so they can be easily used as wrappers for individual inputs or groups of inputs. +- ``s, like fieldsets, have also been restyled to be displayed as a heading of sorts. +- ``s are set to `display: inline-block` to allow `margin` to be applied. +- ``s, ``s, ``s, and ``s are mostly addressed by Normalize, but Reboot removes their `margin` and sets `line-height: inherit`, too. +- ``s are modified to only be resizable vertically as horizontal resizing often "breaks" page layout. + +These changes, and more, are demonstrated below. + + + + Example legend + + + Example input + + + + + Example select + + Choose... + + Option 1 + Option 2 + Option 3 + + + Option 4 + Option 5 + Option 6 + + + + + + + + Check this checkbox + + + + + + + Option one is this and that + + + + Option two is something else that's also super long to demonstrate the wrapping of these fancy form controls. + + + + Option three is disabled + + + + + Example textarea + + + + + Example temporal + + + + + Example output + 100 + + + + Button submit + + + + + + Button submit + + + + + + +## Misc elements + +### Address + +The `` element is updated to reset the browser default `font-style` from `italic` to `normal`. `line-height` is also now inherited, and `margin-bottom: 1rem` has been added. ``s are for presenting contact information for the nearest ancestor (or an entire body of work). Preserve formatting by ending lines with ``. + + + + Twitter, Inc. + 1355 Market St, Suite 900 + San Francisco, CA 94103 + P: (123) 456-7890 + + + + Full Name + first.last@example.com + + + +### Blockquote + +The default `margin` on blockquotes is `1em 40px`, so we reset that to `0 0 1rem` for something more consistent with other elements. + + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante. + + + + +### Inline elements + +The `` element receives basic styling to make it stand out amongst paragraph text. + + + Nulla attr vitae elit libero, a pharetra augue. + + +## HTML5 `[hidden]` attribute + +HTML5 adds [a new global attribute named `[hidden]`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/hidden), which is styled as `display: none` by default. Borrowing an idea from [PureCSS](http://purecss.io), we improve upon this default by making `[hidden] { display: none !important; }` to help prevent its `display` from getting accidentally overridden. While `[hidden]` isn't natively supported by IE9-10, the explicit declaration in our CSS gets around that problem. + +{% highlight html %} + +{% endhighlight %} + +{% callout warning %} +#### jQuery incompatibility + +`[hidden]` is not compatible with jQuery's `$(...).hide()` and `$(...).show()` methods. This could potentially change in jQuery 3, but we're not holding our breath. Therefore, we don't currently especially endorse `[hidden]` over other techniques for managing the `display` of elements. +{% endcallout %} + +To merely toggle the visibility of an element, meaning its `display` is not modified and the element can still affect the flow of the document, use [the `.invisible` class]({{ site.baseurl }}/components/utilities/#invisible-content) instead. + +## Click delay optimization for touch + +Traditionally, browsers on touchscreen devices have a delay of approximately 300ms between the end of a "tap" – the moment when a finger/stylus is lifted from screen – and the [`click` event](https://developer.mozilla.org/en-US/docs/Web/Events/click) being fired. This delay is necessary for these browsers to correctly handle "double-tap to zoom" gestures without prematurely triggering actions or links after the first "tap", but it can make your site feel slightly sluggish and unresponsive. + +Most mobile browsers automatically optimize away this 300ms delay for sites that use the `width=device-width` property as part of their [responsive meta tag]({{ site.baseurl }}/getting-started/introduction/#responsive-meta-tag) (as well as for sites that disable zooming, for instance with `user-scalable=no`, though this practice is strongly discouraged for accessibility and usability reasons). The biggest exceptions here are currently iOS Safari (and any other iOS WebView-based browser) – though this is likely to change in iOS 10, see [WebKit bug #150604](https://bugs.webkit.org/show_bug.cgi?id=150604) – and IE11 on Windows Phone 8.1. + +On touch-enabled laptop/desktop devices, IE11 and Microsoft Edge are currently the only browsers with "double-tap to zoom" functionality. As the [responsive meta tag]({{ site.baseurl }}/getting-started/introduction/#responsive-meta-tag) is ignored by all desktop browsers, using `width=device-width` will have no effect on the 300ms delay here. + +To address this problem in IE11 and Microsoft Edge on desktop, as well as IE11 on Windows Phone 8.1, Bootstrap explicitly uses the [`touch-action:manipulation` CSS property](https://developer.mozilla.org/en-US/docs/Web/CSS/touch-action) on all interactive elements (such as buttons and links). This property essentially disables double-tap functionality on those elements, eliminating the 300ms delay. + +In the case of iOS, the currently suggested approach is to use additional scripts such as [FastClick](https://github.com/ftlabs/fastclick) to explicitly work around the delay. + +For further details, see the compatibility table for [suppressing 300ms delay for touchscreen interactions](http://patrickhlauke.github.io/touch/tests/results/#suppressing-300ms-delay). diff --git a/docs/content/tables.md b/docs/content/tables.md new file mode 100644 index 000000000..80bbbf854 --- /dev/null +++ b/docs/content/tables.md @@ -0,0 +1,611 @@ +--- +layout: docs +title: Tables +group: content +--- + +Due to the widespread use of tables across third-party widgets like calendars and date pickers, we've designed our tables to be **opt-in**. Just add the base class `.table` to any ``. + +## Contents + +* Will be replaced with the ToC, excluding the "Contents" header +{:toc} + +## Basic example + +{% example html %} + + + + # + First Name + Last Name + Username + + + + + 1 + Mark + Otto + @mdo + + + 2 + Jacob + Thornton + @fat + + + 3 + Larry + the Bird + @twitter + + + +{% endexample %} + +## Inverse table + +{% example html %} + + + + # + First Name + Last Name + Username + + + + + 1 + Mark + Otto + @mdo + + + 2 + Jacob + Thornton + @fat + + + 3 + Larry + the Bird + @twitter + + + +{% endexample %} + +## Table head options + +Use one of two modifier classes to make ``s appear light or dark gray. + +{% example html %} + + + + # + First Name + Last Name + Username + + + + + 1 + Mark + Otto + @mdo + + + 2 + Jacob + Thornton + @fat + + + 3 + Larry + the Bird + @twitter + + + + + + + + # + First Name + Last Name + Username + + + + + 1 + Mark + Otto + @mdo + + + 2 + Jacob + Thornton + @fat + + + 3 + Larry + the Bird + @twitter + + + +{% endexample %} + +## Striped rows + +Use `.table-striped` to add zebra-striping to any table row within the ``. + +{% example html %} + + + + # + First Name + Last Name + Username + + + + + 1 + Mark + Otto + @mdo + + + 2 + Jacob + Thornton + @fat + + + 3 + Larry + the Bird + @twitter + + + +{% endexample %} + +## Bordered table + +Add `.table-bordered` for borders on all sides of the table and cells. + +{% example html %} + + + + # + First Name + Last Name + Username + + + + + 1 + Mark + Otto + @mdo + + + 2 + Mark + Otto + @TwBootstrap + + + 3 + Jacob + Thornton + @fat + + + 4 + Larry the Bird + @twitter + + + +{% endexample %} + +## Hoverable rows + +Add `.table-hover` to enable a hover state on table rows within a ``. + +{% example html %} + + + + # + First Name + Last Name + Username + + + + + 1 + Mark + Otto + @mdo + + + 2 + Jacob + Thornton + @fat + + + 3 + Larry the Bird + @twitter + + + +{% endexample %} + +## Small table + +Add `.table-sm` to make tables more compact by cutting cell padding in half. + +{% example html %} + + + + # + First Name + Last Name + Username + + + + + 1 + Mark + Otto + @mdo + + + 2 + Jacob + Thornton + @fat + + + 3 + Larry the Bird + @twitter + + + +{% endexample %} + +## Contextual classes + +Use contextual classes to color table rows or individual cells. + + + + + + + + + + Class + Description + + + + + + .table-active + + Applies the hover color to a particular row or cell + + + + .table-success + + Indicates a successful or positive action + + + + .table-info + + Indicates a neutral informative change or action + + + + .table-warning + + Indicates a warning that might need attention + + + + .table-danger + + Indicates a dangerous or potentially negative action + + + + + + + + + + # + Column heading + Column heading + Column heading + + + + + 1 + Column content + Column content + Column content + + + 2 + Column content + Column content + Column content + + + 3 + Column content + Column content + Column content + + + 4 + Column content + Column content + Column content + + + 5 + Column content + Column content + Column content + + + 6 + Column content + Column content + Column content + + + 7 + Column content + Column content + Column content + + + 8 + Column content + Column content + Column content + + + 9 + Column content + Column content + Column content + + + + + +{% highlight html %} + +... +... +... +... +... + + + + ... + ... + ... + ... + ... + +{% endhighlight %} + +## Responsive tables + +Create responsive tables by wrapping any `.table` in `.table-responsive` to make them scroll horizontally on small devices (under 768px). When viewing on anything larger than 768px wide, you will not see any difference in these tables. + +{% callout warning %} +#### Vertical clipping/truncation + +Responsive tables make use of `overflow-y: hidden`, which clips off any content that goes beyond the bottom or top edges of the table. In particular, this can clip off dropdown menus and other third-party widgets. +{% endcallout %} + +{% callout warning %} +#### Firefox and fieldsets + +Firefox has some awkward fieldset styling involving `width` that interferes with the responsive table. This cannot be overridden without a Firefox-specific hack that we **don't** provide in Bootstrap: + +{% highlight css %} +@-moz-document url-prefix() { + fieldset { display: table-cell; } +} +{% endhighlight %} + +For more information, read [this Stack Overflow answer](https://stackoverflow.com/questions/17408815/fieldset-resizes-wrong-appears-to-have-unremovable-min-width-min-content/17863685#17863685). +{% endcallout %} + + + + + + + # + Table heading + Table heading + Table heading + Table heading + Table heading + Table heading + + + + + 1 + Table cell + Table cell + Table cell + Table cell + Table cell + Table cell + + + 2 + Table cell + Table cell + Table cell + Table cell + Table cell + Table cell + + + 3 + Table cell + Table cell + Table cell + Table cell + Table cell + Table cell + + + + + + + + + + # + Table heading + Table heading + Table heading + Table heading + Table heading + Table heading + + + + + 1 + Table cell + Table cell + Table cell + Table cell + Table cell + Table cell + + + 2 + Table cell + Table cell + Table cell + Table cell + Table cell + Table cell + + + 3 + Table cell + Table cell + Table cell + Table cell + Table cell + Table cell + + + + + + +{% highlight html %} + + + ... + + +{% endhighlight %} + + +### Reflow + +{% example html %} + + + + # + Table heading + Table heading + Table heading + Table heading + Table heading + Table heading + + + + + 1 + Table cell + Table cell + Table cell + Table cell + Table cell + Table cell + + + 2 + Table cell + Table cell + Table cell + Table cell + Table cell + Table cell + + + 3 + Table cell + Table cell + Table cell + Table cell + Table cell + Table cell + + + +{% endexample %} diff --git a/docs/content/typography.md b/docs/content/typography.md new file mode 100644 index 000000000..651e2c49c --- /dev/null +++ b/docs/content/typography.md @@ -0,0 +1,267 @@ +--- +layout: docs +title: Typography +group: content +--- + +Bootstrap includes simple and easily customized typography for headings, body text, lists, and more. For even more control, check out the [textual utility classes]({{ site.baseurl }}/components/utilities/). + +## Contents + +* Will be replaced with the ToC, excluding the "Contents" header +{:toc} + +## Global settings + +Bootstrap sets basic global display, typography, and link styles. Specifically, we: + +- Use `$body-bg` to set a `background-color` on the `` (`#fff` by default) +- Use the `$font-family-base`, `$font-size-base`, and `$line-height-base` attributes as our typographic base +- Set the global link color via `$link-color` and apply link underlines only on `:hover` + +These styles can be found within `_reboot.scss`, and the global variables are defined in `_variables.scss`. + + +## Headings + +All HTML headings, `` through ``, are available. `.h1` through `.h6` classes are also available, for when you want to match the font styling of a heading but still want your text to be displayed inline. + + + + + + h1. Bootstrap heading + Semibold 36px + + + h2. Bootstrap heading + Semibold 30px + + + h3. Bootstrap heading + Semibold 24px + + + h4. Bootstrap heading + Semibold 18px + + + h5. Bootstrap heading + Semibold 14px + + + h6. Bootstrap heading + Semibold 12px + + + + + +{% highlight html %} +h1. Bootstrap heading +h2. Bootstrap heading +h3. Bootstrap heading +h4. Bootstrap heading +h5. Bootstrap heading +h6. Bootstrap heading +{% endhighlight %} + +### Customizing headings + +Use the included utility classes to recreate the small secondary heading text from Bootstrap 3. + +{% example html %} + + Fancy display heading + With faded secondary text + +{% endexample %} + +## Display headings + +Traditional heading elements are designed to work best in the meat of your page content. When you need a heading to stand out, consider using a **display heading**—a larger, slightly more opinionated heading style. + + + + + + Display 1 + + + Display 2 + + + Display 3 + + + Display 4 + + + + + +{% highlight html %} +Display 1 +Display 2 +Display 3 +Display 4 +{% endhighlight %} + +## Lead + +Make a paragraph stand out by adding `.lead`. + +{% example html %} + + Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Duis mollis, est non commodo luctus. + +{% endexample %} + +## Inline text elements + +Styling for common inline HTML5 elements. + +{% example html %} +You can use the mark tag to highlight text. +This line of text is meant to be treated as deleted text. +This line of text is meant to be treated as no longer accurate. +This line of text is meant to be treated as an addition to the document. +This line of text will render as underlined +This line of text is meant to be treated as fine print. +This line rendered as bold text. +This line rendered as italicized text. +{% endexample %} + +While not shown above, feel free to use `` and `` in HTML5. `` is meant to highlight words or phrases without conveying additional importance while `` is mostly for voice, technical terms, etc. + +## Abbreviations + +Stylized implementation of HTML's `` element for abbreviations and acronyms to show the expanded version on hover. Abbreviations with a `title` attribute have a light dotted bottom border and a help cursor on hover, providing additional context on hover and to users of assistive technologies. + +Add `.initialism` to an abbreviation for a slightly smaller font-size. + +{% example html %} +attr +HTML +{% endexample %} + +## Blockquotes + +For quoting blocks of content from another source within your document. Wrap `` around any HTML as the quote. + +{% example html %} + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante. + +{% endexample %} + +### Naming a source + +Add a `
<p>Sample text here...</p>
` are reset to have their `margin-top` removed. Headings have `margin-bottom: .5rem` added and paragraphs `margin-bottom: 1rem` for easy spacing. + +
` element is reset to remove its `margin-top` and use `rem` units for its `margin-bottom`. + + +{% markdown %} + +.example-element { + margin-bottom: 1rem; +} + +{% endmarkdown %} + + +## Tables + +Tables are slightly adjusted to style ``s and ensure consistent `text-align` throughout. Additional changes for borders, padding, and more come with [the `.table` class]({{ site.baseurl }}/content/tables/). + + + + + This is an example table, and this is its caption to describe the contents. + + + + Table heading + Table heading + Table heading + Table heading + + + + + Table cell + Table cell + Table cell + Table cell + + + Table cell + Table cell + Table cell + Table cell + + + Table cell + Table cell + Table cell + Table cell + + + + + +## Forms + +Various form elements have been rebooted for simpler base styles. Here are some of the most notable changes: + +- ``s have no borders, padding, or margin so they can be easily used as wrappers for individual inputs or groups of inputs. +- ``s, like fieldsets, have also been restyled to be displayed as a heading of sorts. +- ``s are set to `display: inline-block` to allow `margin` to be applied. +- ``s, ``s, ``s, and ``s are mostly addressed by Normalize, but Reboot removes their `margin` and sets `line-height: inherit`, too. +- ``s are modified to only be resizable vertically as horizontal resizing often "breaks" page layout. + +These changes, and more, are demonstrated below. + + + + Example legend + + + Example input + + + + + Example select + + Choose... + + Option 1 + Option 2 + Option 3 + + + Option 4 + Option 5 + Option 6 + + + + + + + + Check this checkbox + + + + + + + Option one is this and that + + + + Option two is something else that's also super long to demonstrate the wrapping of these fancy form controls. + + + + Option three is disabled + + + + + Example textarea + + + + + Example temporal + + + + + Example output + 100 + + + + Button submit + + + + + + Button submit + + + + + + +## Misc elements + +### Address + +The `` element is updated to reset the browser default `font-style` from `italic` to `normal`. `line-height` is also now inherited, and `margin-bottom: 1rem` has been added. ``s are for presenting contact information for the nearest ancestor (or an entire body of work). Preserve formatting by ending lines with ``. + + + + Twitter, Inc. + 1355 Market St, Suite 900 + San Francisco, CA 94103 + P: (123) 456-7890 + + + + Full Name + first.last@example.com + + + +### Blockquote + +The default `margin` on blockquotes is `1em 40px`, so we reset that to `0 0 1rem` for something more consistent with other elements. + + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante. + + + + +### Inline elements + +The `` element receives basic styling to make it stand out amongst paragraph text. + + + Nulla attr vitae elit libero, a pharetra augue. + + +## HTML5 `[hidden]` attribute + +HTML5 adds [a new global attribute named `[hidden]`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/hidden), which is styled as `display: none` by default. Borrowing an idea from [PureCSS](http://purecss.io), we improve upon this default by making `[hidden] { display: none !important; }` to help prevent its `display` from getting accidentally overridden. While `[hidden]` isn't natively supported by IE9-10, the explicit declaration in our CSS gets around that problem. + +{% highlight html %} + +{% endhighlight %} + +{% callout warning %} +#### jQuery incompatibility + +`[hidden]` is not compatible with jQuery's `$(...).hide()` and `$(...).show()` methods. This could potentially change in jQuery 3, but we're not holding our breath. Therefore, we don't currently especially endorse `[hidden]` over other techniques for managing the `display` of elements. +{% endcallout %} + +To merely toggle the visibility of an element, meaning its `display` is not modified and the element can still affect the flow of the document, use [the `.invisible` class]({{ site.baseurl }}/components/utilities/#invisible-content) instead. + +## Click delay optimization for touch + +Traditionally, browsers on touchscreen devices have a delay of approximately 300ms between the end of a "tap" – the moment when a finger/stylus is lifted from screen – and the [`click` event](https://developer.mozilla.org/en-US/docs/Web/Events/click) being fired. This delay is necessary for these browsers to correctly handle "double-tap to zoom" gestures without prematurely triggering actions or links after the first "tap", but it can make your site feel slightly sluggish and unresponsive. + +Most mobile browsers automatically optimize away this 300ms delay for sites that use the `width=device-width` property as part of their [responsive meta tag]({{ site.baseurl }}/getting-started/introduction/#responsive-meta-tag) (as well as for sites that disable zooming, for instance with `user-scalable=no`, though this practice is strongly discouraged for accessibility and usability reasons). The biggest exceptions here are currently iOS Safari (and any other iOS WebView-based browser) – though this is likely to change in iOS 10, see [WebKit bug #150604](https://bugs.webkit.org/show_bug.cgi?id=150604) – and IE11 on Windows Phone 8.1. + +On touch-enabled laptop/desktop devices, IE11 and Microsoft Edge are currently the only browsers with "double-tap to zoom" functionality. As the [responsive meta tag]({{ site.baseurl }}/getting-started/introduction/#responsive-meta-tag) is ignored by all desktop browsers, using `width=device-width` will have no effect on the 300ms delay here. + +To address this problem in IE11 and Microsoft Edge on desktop, as well as IE11 on Windows Phone 8.1, Bootstrap explicitly uses the [`touch-action:manipulation` CSS property](https://developer.mozilla.org/en-US/docs/Web/CSS/touch-action) on all interactive elements (such as buttons and links). This property essentially disables double-tap functionality on those elements, eliminating the 300ms delay. + +In the case of iOS, the currently suggested approach is to use additional scripts such as [FastClick](https://github.com/ftlabs/fastclick) to explicitly work around the delay. + +For further details, see the compatibility table for [suppressing 300ms delay for touchscreen interactions](http://patrickhlauke.github.io/touch/tests/results/#suppressing-300ms-delay). diff --git a/docs/content/tables.md b/docs/content/tables.md new file mode 100644 index 000000000..80bbbf854 --- /dev/null +++ b/docs/content/tables.md @@ -0,0 +1,611 @@ +--- +layout: docs +title: Tables +group: content +--- + +Due to the widespread use of tables across third-party widgets like calendars and date pickers, we've designed our tables to be **opt-in**. Just add the base class `.table` to any ``. + +## Contents + +* Will be replaced with the ToC, excluding the "Contents" header +{:toc} + +## Basic example + +{% example html %} + + + + # + First Name + Last Name + Username + + + + + 1 + Mark + Otto + @mdo + + + 2 + Jacob + Thornton + @fat + + + 3 + Larry + the Bird + @twitter + + + +{% endexample %} + +## Inverse table + +{% example html %} + + + + # + First Name + Last Name + Username + + + + + 1 + Mark + Otto + @mdo + + + 2 + Jacob + Thornton + @fat + + + 3 + Larry + the Bird + @twitter + + + +{% endexample %} + +## Table head options + +Use one of two modifier classes to make ``s appear light or dark gray. + +{% example html %} + + + + # + First Name + Last Name + Username + + + + + 1 + Mark + Otto + @mdo + + + 2 + Jacob + Thornton + @fat + + + 3 + Larry + the Bird + @twitter + + + + + + + + # + First Name + Last Name + Username + + + + + 1 + Mark + Otto + @mdo + + + 2 + Jacob + Thornton + @fat + + + 3 + Larry + the Bird + @twitter + + + +{% endexample %} + +## Striped rows + +Use `.table-striped` to add zebra-striping to any table row within the ``. + +{% example html %} + + + + # + First Name + Last Name + Username + + + + + 1 + Mark + Otto + @mdo + + + 2 + Jacob + Thornton + @fat + + + 3 + Larry + the Bird + @twitter + + + +{% endexample %} + +## Bordered table + +Add `.table-bordered` for borders on all sides of the table and cells. + +{% example html %} + + + + # + First Name + Last Name + Username + + + + + 1 + Mark + Otto + @mdo + + + 2 + Mark + Otto + @TwBootstrap + + + 3 + Jacob + Thornton + @fat + + + 4 + Larry the Bird + @twitter + + + +{% endexample %} + +## Hoverable rows + +Add `.table-hover` to enable a hover state on table rows within a ``. + +{% example html %} + + + + # + First Name + Last Name + Username + + + + + 1 + Mark + Otto + @mdo + + + 2 + Jacob + Thornton + @fat + + + 3 + Larry the Bird + @twitter + + + +{% endexample %} + +## Small table + +Add `.table-sm` to make tables more compact by cutting cell padding in half. + +{% example html %} + + + + # + First Name + Last Name + Username + + + + + 1 + Mark + Otto + @mdo + + + 2 + Jacob + Thornton + @fat + + + 3 + Larry the Bird + @twitter + + + +{% endexample %} + +## Contextual classes + +Use contextual classes to color table rows or individual cells. + + + + + + + + + + Class + Description + + + + + + .table-active + + Applies the hover color to a particular row or cell + + + + .table-success + + Indicates a successful or positive action + + + + .table-info + + Indicates a neutral informative change or action + + + + .table-warning + + Indicates a warning that might need attention + + + + .table-danger + + Indicates a dangerous or potentially negative action + + + + + + + + + + # + Column heading + Column heading + Column heading + + + + + 1 + Column content + Column content + Column content + + + 2 + Column content + Column content + Column content + + + 3 + Column content + Column content + Column content + + + 4 + Column content + Column content + Column content + + + 5 + Column content + Column content + Column content + + + 6 + Column content + Column content + Column content + + + 7 + Column content + Column content + Column content + + + 8 + Column content + Column content + Column content + + + 9 + Column content + Column content + Column content + + + + + +{% highlight html %} + +... +... +... +... +... + + + + ... + ... + ... + ... + ... + +{% endhighlight %} + +## Responsive tables + +Create responsive tables by wrapping any `.table` in `.table-responsive` to make them scroll horizontally on small devices (under 768px). When viewing on anything larger than 768px wide, you will not see any difference in these tables. + +{% callout warning %} +#### Vertical clipping/truncation + +Responsive tables make use of `overflow-y: hidden`, which clips off any content that goes beyond the bottom or top edges of the table. In particular, this can clip off dropdown menus and other third-party widgets. +{% endcallout %} + +{% callout warning %} +#### Firefox and fieldsets + +Firefox has some awkward fieldset styling involving `width` that interferes with the responsive table. This cannot be overridden without a Firefox-specific hack that we **don't** provide in Bootstrap: + +{% highlight css %} +@-moz-document url-prefix() { + fieldset { display: table-cell; } +} +{% endhighlight %} + +For more information, read [this Stack Overflow answer](https://stackoverflow.com/questions/17408815/fieldset-resizes-wrong-appears-to-have-unremovable-min-width-min-content/17863685#17863685). +{% endcallout %} + + + + + + + # + Table heading + Table heading + Table heading + Table heading + Table heading + Table heading + + + + + 1 + Table cell + Table cell + Table cell + Table cell + Table cell + Table cell + + + 2 + Table cell + Table cell + Table cell + Table cell + Table cell + Table cell + + + 3 + Table cell + Table cell + Table cell + Table cell + Table cell + Table cell + + + + + + + + + + # + Table heading + Table heading + Table heading + Table heading + Table heading + Table heading + + + + + 1 + Table cell + Table cell + Table cell + Table cell + Table cell + Table cell + + + 2 + Table cell + Table cell + Table cell + Table cell + Table cell + Table cell + + + 3 + Table cell + Table cell + Table cell + Table cell + Table cell + Table cell + + + + + + +{% highlight html %} + + + ... + + +{% endhighlight %} + + +### Reflow + +{% example html %} + + + + # + Table heading + Table heading + Table heading + Table heading + Table heading + Table heading + + + + + 1 + Table cell + Table cell + Table cell + Table cell + Table cell + Table cell + + + 2 + Table cell + Table cell + Table cell + Table cell + Table cell + Table cell + + + 3 + Table cell + Table cell + Table cell + Table cell + Table cell + Table cell + + + +{% endexample %} diff --git a/docs/content/typography.md b/docs/content/typography.md new file mode 100644 index 000000000..651e2c49c --- /dev/null +++ b/docs/content/typography.md @@ -0,0 +1,267 @@ +--- +layout: docs +title: Typography +group: content +--- + +Bootstrap includes simple and easily customized typography for headings, body text, lists, and more. For even more control, check out the [textual utility classes]({{ site.baseurl }}/components/utilities/). + +## Contents + +* Will be replaced with the ToC, excluding the "Contents" header +{:toc} + +## Global settings + +Bootstrap sets basic global display, typography, and link styles. Specifically, we: + +- Use `$body-bg` to set a `background-color` on the `` (`#fff` by default) +- Use the `$font-family-base`, `$font-size-base`, and `$line-height-base` attributes as our typographic base +- Set the global link color via `$link-color` and apply link underlines only on `:hover` + +These styles can be found within `_reboot.scss`, and the global variables are defined in `_variables.scss`. + + +## Headings + +All HTML headings, `` through ``, are available. `.h1` through `.h6` classes are also available, for when you want to match the font styling of a heading but still want your text to be displayed inline. + + + + + + h1. Bootstrap heading + Semibold 36px + + + h2. Bootstrap heading + Semibold 30px + + + h3. Bootstrap heading + Semibold 24px + + + h4. Bootstrap heading + Semibold 18px + + + h5. Bootstrap heading + Semibold 14px + + + h6. Bootstrap heading + Semibold 12px + + + + + +{% highlight html %} +h1. Bootstrap heading +h2. Bootstrap heading +h3. Bootstrap heading +h4. Bootstrap heading +h5. Bootstrap heading +h6. Bootstrap heading +{% endhighlight %} + +### Customizing headings + +Use the included utility classes to recreate the small secondary heading text from Bootstrap 3. + +{% example html %} + + Fancy display heading + With faded secondary text + +{% endexample %} + +## Display headings + +Traditional heading elements are designed to work best in the meat of your page content. When you need a heading to stand out, consider using a **display heading**—a larger, slightly more opinionated heading style. + + + + + + Display 1 + + + Display 2 + + + Display 3 + + + Display 4 + + + + + +{% highlight html %} +Display 1 +Display 2 +Display 3 +Display 4 +{% endhighlight %} + +## Lead + +Make a paragraph stand out by adding `.lead`. + +{% example html %} + + Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Duis mollis, est non commodo luctus. + +{% endexample %} + +## Inline text elements + +Styling for common inline HTML5 elements. + +{% example html %} +You can use the mark tag to highlight text. +This line of text is meant to be treated as deleted text. +This line of text is meant to be treated as no longer accurate. +This line of text is meant to be treated as an addition to the document. +This line of text will render as underlined +This line of text is meant to be treated as fine print. +This line rendered as bold text. +This line rendered as italicized text. +{% endexample %} + +While not shown above, feel free to use `` and `` in HTML5. `` is meant to highlight words or phrases without conveying additional importance while `` is mostly for voice, technical terms, etc. + +## Abbreviations + +Stylized implementation of HTML's `` element for abbreviations and acronyms to show the expanded version on hover. Abbreviations with a `title` attribute have a light dotted bottom border and a help cursor on hover, providing additional context on hover and to users of assistive technologies. + +Add `.initialism` to an abbreviation for a slightly smaller font-size. + +{% example html %} +attr +HTML +{% endexample %} + +## Blockquotes + +For quoting blocks of content from another source within your document. Wrap `` around any HTML as the quote. + +{% example html %} + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante. + +{% endexample %} + +### Naming a source + +Add a `
+.example-element { + margin-bottom: 1rem; +} +
+ Example input + +
+ Example select + + Choose... + + Option 1 + Option 2 + Option 3 + + + Option 4 + Option 5 + Option 6 + + +
+ + + Check this checkbox + +
+ + + Option one is this and that + + + + Option two is something else that's also super long to demonstrate the wrapping of these fancy form controls. + + + + Option three is disabled + +
+ Example textarea + +
+ Example temporal + +
+ Example output + 100 +
+ Button submit + + +
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante. + +
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.
.table-active
.table-success
.table-info
.table-warning
.table-danger
+ Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Duis mollis, est non commodo luctus. +
You can use the mark tag to highlight text.
This line of text is meant to be treated as deleted text.
This line of text is meant to be treated as no longer accurate.
This line of text is meant to be treated as an addition to the document.
This line of text will render as underlined
This line of text is meant to be treated as fine print.
This line rendered as bold text.
This line rendered as italicized text.
attr
HTML
` around any HTML as the quote. + +{% example html %} + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante. + +{% endexample %} + +### Naming a source + +Add a `
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante. +