From 871e45fb6eb7ca07d3ac6872de8d883a8bd9af4a Mon Sep 17 00:00:00 2001 From: Dariusz Porowski <3431813+DariuszPorowski@users.noreply.github.com> Date: Tue, 23 Jun 2026 12:22:47 -0700 Subject: [PATCH 1/3] build(deps): bump hugo and related files Signed-off-by: Dariusz Porowski <3431813+DariuszPorowski@users.noreply.github.com> --- .github/scripts/monitor-remote-workflow.mjs | 156 + .github/workflows/main.yml | 345 +- .gitignore | 3 + .node-version | 1 + README.md | 21 +- config/_default/config.toml | 6 + config/_default/languages.toml | 2 +- go.mod | 3 + package-lock.json | 230 + package.json | 29 + static/ms65434265.txt | 8 +- .../assets/plugins/bootstrap/bootstrap.min.js | 10336 ++++++++-------- themes/bigspring-light/layouts/404.html | 4 +- .../layouts/_default/baseof.html | 4 +- .../layouts/_default/single.html | 6 +- .../layouts/partials/head.html | 122 +- 16 files changed, 5996 insertions(+), 5280 deletions(-) create mode 100644 .github/scripts/monitor-remote-workflow.mjs create mode 100644 .node-version create mode 100644 go.mod create mode 100644 package-lock.json create mode 100644 package.json diff --git a/.github/scripts/monitor-remote-workflow.mjs b/.github/scripts/monitor-remote-workflow.mjs new file mode 100644 index 0000000..d67a64f --- /dev/null +++ b/.github/scripts/monitor-remote-workflow.mjs @@ -0,0 +1,156 @@ +// @ts-nocheck + +/** + * Monitor a remote workflow run that was triggered via `repository_dispatch`. + * + * Designed to be invoked from `actions/github-script`. Configuration is read + * from `INPUT_*` environment variables (via `core.getInput`): + * - OWNER (required) Target repository owner. + * - REPO (required) Target repository name. + * - WORKFLOW_FILE (required) Target workflow file name (e.g. `swa.yml`). + * - DISPATCH_STARTED_AT (required) ISO timestamp captured just before dispatch. + * - MAX_WAIT_SECONDS (optional) Overall timeout in seconds (default 900). + * - POLL_INTERVAL_SECONDS (optional) Poll interval in seconds (default 10). + * + * On success it exposes `run_id`, `run_url`, and `conclusion` outputs. On + * failure (remote run failed or timed out) it calls `core.setFailed` with a + * summary of the failed jobs and steps. + * + * @param {{ github: any, core: any }} param0 + */ +export default async ({ github, core }) => { + try { + const remoteOwner = core.getInput("OWNER", { required: true }); + const remoteRepo = core.getInput("REPO", { required: true }); + const remoteWorkflowFile = core.getInput("WORKFLOW_FILE", { + required: true, + }); + const dispatchStartedAt = core.getInput("DISPATCH_STARTED_AT", { + required: true, + }); + + const maxWaitSeconds = Number(core.getInput("MAX_WAIT_SECONDS") || "900"); + const pollIntervalSeconds = Number( + core.getInput("POLL_INTERVAL_SECONDS") || "10", + ); + + /** @param {number} ms */ + const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); + + core.info( + `Waiting for remote workflow run in ${remoteOwner}/${remoteRepo}...`, + ); + + const findLatestRun = async () => { + const response = await github.rest.actions.listWorkflowRuns({ + owner: remoteOwner, + repo: remoteRepo, + workflow_id: remoteWorkflowFile, + event: "repository_dispatch", + per_page: 20, + }); + + const candidateRuns = (response.data.workflow_runs || []) + /** @param {any} run */ + .filter((run) => run.created_at >= dispatchStartedAt) + /** @param {any} left @param {any} right */ + .sort((left, right) => left.created_at.localeCompare(right.created_at)); + + return candidateRuns.length > 0 + ? candidateRuns[candidateRuns.length - 1] + : undefined; + }; + + let run; + for ( + let elapsed = 0; + elapsed < maxWaitSeconds; + elapsed += pollIntervalSeconds + ) { + run = await findLatestRun(); + if (run) { + break; + } + + await sleep(pollIntervalSeconds * 1000); + } + + if (!run) { + core.setFailed( + `Timed out waiting for remote workflow run to start: https://github.com/${remoteOwner}/${remoteRepo}/actions/workflows/${remoteWorkflowFile}`, + ); + return; + } + + const runUrl = + run.html_url || + `https://github.com/${remoteOwner}/${remoteRepo}/actions/runs/${run.id}`; + + core.info(`Monitoring remote run id: ${run.id}`); + core.info(`Remote workflow run URL: ${runUrl}`); + + for ( + let elapsed = 0; + elapsed < maxWaitSeconds; + elapsed += pollIntervalSeconds + ) { + const runResponse = await github.rest.actions.getWorkflowRun({ + owner: remoteOwner, + repo: remoteRepo, + run_id: run.id, + }); + + const status = runResponse.data.status; + const conclusion = runResponse.data.conclusion || ""; + + if (status === "completed") { + core.setOutput("run_id", String(run.id)); + core.setOutput("run_url", runUrl); + core.setOutput("conclusion", conclusion); + + if (conclusion === "success") { + core.info("Remote workflow completed successfully"); + return; + } + + const jobsResponse = await github.rest.actions.listJobsForWorkflowRun({ + owner: remoteOwner, + repo: remoteRepo, + run_id: run.id, + per_page: 100, + }); + + const failedJobs = (jobsResponse.data.jobs || []).filter( + /** @param {any} job */ + (job) => job.conclusion !== "success", + ); + const failedJobText = failedJobs + /** @param {any} job */ + .map((job) => { + const failedSteps = (job.steps || []) + /** @param {any} step */ + .filter((step) => step.conclusion === "failure") + /** @param {any} step */ + .map((step) => ` - Step: ${step.name}`) + .join("\n"); + + return `- Job: ${job.name} [${job.conclusion}]${failedSteps ? `\n${failedSteps}` : ""}`; + }) + .join("\n"); + + core.setFailed( + `Remote workflow failed with conclusion: ${conclusion}\nRemote workflow run: ${runUrl}${failedJobText ? `\nFailed jobs/steps:\n${failedJobText}` : ""}`, + ); + return; + } + + await sleep(pollIntervalSeconds * 1000); + } + + core.setOutput("run_id", String(run.id)); + core.setOutput("run_url", runUrl); + core.setFailed(`Timed out waiting for remote workflow completion: ${runUrl}`); + } catch (error) { + core.setFailed(error instanceof Error ? error.message : String(error)); + } +}; diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index b82f238..3c4721e 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -14,16 +14,32 @@ on: permissions: {} +concurrency: + group: website-swa-${{ github.event.pull_request.number || github.ref || github.run_id }} + cancel-in-progress: ${{ github.event_name == 'pull_request' }} + +env: + TARGET_OWNER: azure-octo + TARGET_REPO: radius-publisher + TARGET_WORKFLOW_FILE: swa.yml + MAX_WAIT_SECONDS: "600" + POLL_INTERVAL_SECONDS: "15" + SWA_CLI_APP_NAME: radius-website + PREVIEW_COMMENT_HEADER: swa-preview + BUILD_OUTPUT_DIR: public + BUILD_ARTIFACT_NAME: hugo_build + jobs: build: name: Build Hugo Website - if: github.event.action != 'closed' + if: >- + !(github.event_name == 'pull_request' + && github.event.action == 'closed') runs-on: ubuntu-24.04 - timeout-minutes: 5 + timeout-minutes: 15 permissions: contents: read env: - GOVER: "^1.17" HUGO_ENV: production steps: - name: Checkout website repo @@ -31,50 +47,315 @@ jobs: with: persist-credentials: false - - name: Setup Hugo - uses: peaceiris/actions-hugo@2752ce1d29631191ea3f27c23495fa06139a5b78 # v3.2.1 + - name: Setup Go + uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0 + with: + go-version-file: go.mod + cache: false + + - name: Setup Node + uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 + with: + node-version-file: .node-version + cache: npm + cache-dependency-path: package-lock.json + + - name: Install Node.js dependencies + run: "[[ -f package-lock.json || -f npm-shrinkwrap.json ]] && npm ci || npm install" + + - name: Verify installations + run: | + echo "Go: $(go version)" + echo "Node.js: $(node --version)" + npm run hugo:version + + - name: Restore Hugo cache + id: cache-restore + uses: actions/cache/restore@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5 with: - hugo-version: 0.102.3 - extended: true + path: ${{ runner.temp }}/hugo_cache + key: hugo-${{ runner.os }}-${{ hashFiles('go.sum', 'package-lock.json') }} + restore-keys: | + hugo-${{ runner.os }}- + hugo- - name: Build Hugo Site run: | if [ "${GITHUB_EVENT_NAME}" == 'pull_request' ]; then - hugo -b "/" + npm run build:preview -- -b "/" --cacheDir "${RUNNER_TEMP}/hugo_cache" else - hugo + npm run build -- --cacheDir "${RUNNER_TEMP}/hugo_cache" fi + env: + GITHUB_EVENT_NAME: ${{ github.event_name }} + RUNNER_TEMP: ${{ runner.temp }} + + - name: Save Hugo cache + if: steps.cache-restore.outputs.cache-hit != 'true' + uses: actions/cache/save@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5 + with: + path: ${{ runner.temp }}/hugo_cache + key: ${{ steps.cache-restore.outputs.cache-primary-key }} - name: Upload Hugo artifacts uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: - name: hugo_build - path: ./public/ + name: ${{ env.BUILD_ARTIFACT_NAME }} + path: ${{ env.BUILD_OUTPUT_DIR }} if-no-files-found: error + retention-days: 1 - deploy: - name: Deploy Hugo Website - needs: [build] + dispatch-production: + name: Dispatch Production Deploy + if: >- + (github.event_name == 'push' && github.ref == 'refs/heads/main') + || github.event_name == 'workflow_dispatch' + needs: + - build runs-on: ubuntu-24.04 - timeout-minutes: 5 + timeout-minutes: 15 + permissions: + contents: read environment: name: latest url: https://radapp.io steps: - - name: Download Hugo artifacts - uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 - with: - name: hugo_build - path: site/ - - - name: Deploy static web app - uses: Azure/static-web-apps-deploy@1a947af9992250f3bc2e68ad0754c0b0c11566c9 # v1 - with: - azure_static_web_apps_api_token: ${{ secrets.SWA_TOKEN }} - skip_deploy_on_missing_secrets: true - repo_token: ${{ github.token }} - action: upload - app_location: site/ - api_location: site/ - output_location: "" - skip_app_build: true + - name: Checkout website repo + uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + with: + persist-credentials: false + sparse-checkout: | + .github/scripts/monitor-remote-workflow.mjs + + - name: Get App Token + uses: actions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1 # v3.2.0 + id: github-app-token + with: + client-id: ${{ secrets.RADIUS_PUBLISHER_BOT_CLIENT_ID }} + private-key: ${{ secrets.RADIUS_PUBLISHER_BOT_PRIVATE_KEY }} + permission-metadata: read + permission-actions: read + permission-contents: write + owner: ${{ env.TARGET_OWNER }} + repositories: | + ${{ env.TARGET_REPO }} + + - name: Capture dispatch start time + id: dispatch-start + run: | + echo "started_at=$(date -u +%Y-%m-%dT%H:%M:%SZ)" >> "${GITHUB_OUTPUT}" + + - name: Dispatch production deploy + uses: peter-evans/repository-dispatch@28959ce8df70de7be546dd1250a005dd32156697 # v4.0.1 + with: + token: ${{ steps.github-app-token.outputs.token }} + repository: ${{ env.TARGET_OWNER }}/${{ env.TARGET_REPO }} + event-type: swa + client-payload: |- + { + "action": "deploy", + "environment": "production", + "source_repository": "${{ github.repository }}", + "source_run_id": "${{ github.run_id }}", + "artifact_name": "${{ env.BUILD_ARTIFACT_NAME }}", + "swa_cli_app_name": "${{ env.SWA_CLI_APP_NAME }}" + } + + - name: Monitor remote workflow + id: monitor + uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 + with: + github-token: ${{ steps.github-app-token.outputs.token }} + script: | + const { default: script } = await import(`${process.env.GITHUB_WORKSPACE}/.github/scripts/monitor-remote-workflow.mjs`) + await script({github, core}) + env: + INPUT_OWNER: ${{ env.TARGET_OWNER }} + INPUT_REPO: ${{ env.TARGET_REPO }} + INPUT_WORKFLOW_FILE: ${{ env.TARGET_WORKFLOW_FILE }} + INPUT_DISPATCH_STARTED_AT: ${{ steps.dispatch-start.outputs.started_at }} + INPUT_MAX_WAIT_SECONDS: ${{ env.MAX_WAIT_SECONDS }} + INPUT_POLL_INTERVAL_SECONDS: ${{ env.POLL_INTERVAL_SECONDS }} + + - name: Show failed logs + if: failure() + run: | + gh run view "${RUN_ID}" --repo "${TARGET_OWNER}/${TARGET_REPO}" --log-failed || true + env: + GH_TOKEN: ${{ steps.github-app-token.outputs.token }} + RUN_ID: ${{ steps.monitor.outputs.run_id }} + + dispatch-preview: + name: Dispatch Preview Deploy + if: >- + github.event_name == 'pull_request' + && github.event.action != 'closed' + && github.event.pull_request.head.repo.full_name == github.repository + needs: + - build + runs-on: ubuntu-24.04 + timeout-minutes: 15 + permissions: + contents: read + pull-requests: write + steps: + - name: Checkout website repo + uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + with: + persist-credentials: false + sparse-checkout: | + .github/scripts/monitor-remote-workflow.mjs + + - name: Get App Token + uses: actions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1 # v3.2.0 + id: github-app-token + with: + client-id: ${{ secrets.RADIUS_PUBLISHER_BOT_CLIENT_ID }} + private-key: ${{ secrets.RADIUS_PUBLISHER_BOT_PRIVATE_KEY }} + permission-metadata: read + permission-actions: read + permission-contents: write + owner: ${{ env.TARGET_OWNER }} + repositories: | + ${{ env.TARGET_REPO }} + + - name: Capture dispatch start time + id: dispatch-start + run: | + echo "started_at=$(date -u +%Y-%m-%dT%H:%M:%SZ)" >> "${GITHUB_OUTPUT}" + + - name: Dispatch preview deploy + uses: peter-evans/repository-dispatch@28959ce8df70de7be546dd1250a005dd32156697 # v4.0.1 + with: + token: ${{ steps.github-app-token.outputs.token }} + repository: ${{ env.TARGET_OWNER }}/${{ env.TARGET_REPO }} + event-type: swa + client-payload: |- + { + "action": "deploy", + "environment": "preview", + "pr_number": ${{ github.event.pull_request.number }}, + "source_repository": "${{ github.repository }}", + "source_run_id": "${{ github.run_id }}", + "artifact_name": "${{ env.BUILD_ARTIFACT_NAME }}", + "swa_cli_app_name": "${{ env.SWA_CLI_APP_NAME }}" + } + + - name: Monitor remote workflow + id: monitor + uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 + with: + github-token: ${{ steps.github-app-token.outputs.token }} + script: | + const { default: script } = await import(`${process.env.GITHUB_WORKSPACE}/.github/scripts/monitor-remote-workflow.mjs`) + await script({github, core}) + env: + INPUT_OWNER: ${{ env.TARGET_OWNER }} + INPUT_REPO: ${{ env.TARGET_REPO }} + INPUT_WORKFLOW_FILE: ${{ env.TARGET_WORKFLOW_FILE }} + INPUT_DISPATCH_STARTED_AT: ${{ steps.dispatch-start.outputs.started_at }} + INPUT_MAX_WAIT_SECONDS: ${{ env.MAX_WAIT_SECONDS }} + INPUT_POLL_INTERVAL_SECONDS: ${{ env.POLL_INTERVAL_SECONDS }} + + - name: Upsert preview PR comment + if: success() + uses: marocchino/sticky-pull-request-comment@0ea0beb66eb9baf113663a64ec522f60e49231c0 # v3.0.4 + with: + header: ${{ env.PREVIEW_COMMENT_HEADER }} + skip_unchanged: true + message: | + ### Static Web App Preview + | Environment | Deployment | + |---|---| + | pr${{ github.event.pull_request.number }} | [View workflow run](${{ steps.monitor.outputs.run_url }}) | + + _Deployed from commit `${{ github.event.pull_request.head.sha }}` via the publisher workflow._ + + - name: Show failed logs + if: failure() + run: | + gh run view "${RUN_ID}" --repo "${TARGET_OWNER}/${TARGET_REPO}" --log-failed || true + env: + GH_TOKEN: ${{ steps.github-app-token.outputs.token }} + RUN_ID: ${{ steps.monitor.outputs.run_id }} + + dispatch-cleanup: + name: Dispatch Preview Cleanup + if: >- + github.event_name == 'pull_request' + && github.event.action == 'closed' + && github.event.pull_request.head.repo.full_name == github.repository + runs-on: ubuntu-24.04 + timeout-minutes: 15 + permissions: + contents: read + pull-requests: write + steps: + - name: Checkout website repo + uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + with: + persist-credentials: false + sparse-checkout: | + .github/scripts/monitor-remote-workflow.mjs + + - name: Get App Token + uses: actions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1 # v3.2.0 + id: github-app-token + with: + client-id: ${{ secrets.RADIUS_PUBLISHER_BOT_CLIENT_ID }} + private-key: ${{ secrets.RADIUS_PUBLISHER_BOT_PRIVATE_KEY }} + permission-metadata: read + permission-actions: read + permission-contents: write + owner: ${{ env.TARGET_OWNER }} + repositories: | + ${{ env.TARGET_REPO }} + + - name: Delete preview PR comment + uses: marocchino/sticky-pull-request-comment@0ea0beb66eb9baf113663a64ec522f60e49231c0 # v3.0.4 + with: + header: ${{ env.PREVIEW_COMMENT_HEADER }} + delete: true + + - name: Capture dispatch start time + id: dispatch-start + run: | + echo "started_at=$(date -u +%Y-%m-%dT%H:%M:%SZ)" >> "${GITHUB_OUTPUT}" + + - name: Dispatch preview cleanup + uses: peter-evans/repository-dispatch@28959ce8df70de7be546dd1250a005dd32156697 # v4.0.1 + with: + token: ${{ steps.github-app-token.outputs.token }} + repository: ${{ env.TARGET_OWNER }}/${{ env.TARGET_REPO }} + event-type: swa + client-payload: |- + { + "action": "close", + "source_repository": "${{ github.repository }}", + "pr_number": ${{ github.event.pull_request.number }}, + "swa_cli_app_name": "${{ env.SWA_CLI_APP_NAME }}" + } + + - name: Monitor remote workflow + id: monitor + uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 + with: + github-token: ${{ steps.github-app-token.outputs.token }} + script: | + const { default: script } = await import(`${process.env.GITHUB_WORKSPACE}/.github/scripts/monitor-remote-workflow.mjs`) + await script({github, core}) + env: + INPUT_OWNER: ${{ env.TARGET_OWNER }} + INPUT_REPO: ${{ env.TARGET_REPO }} + INPUT_WORKFLOW_FILE: ${{ env.TARGET_WORKFLOW_FILE }} + INPUT_DISPATCH_STARTED_AT: ${{ steps.dispatch-start.outputs.started_at }} + INPUT_MAX_WAIT_SECONDS: ${{ env.MAX_WAIT_SECONDS }} + INPUT_POLL_INTERVAL_SECONDS: ${{ env.POLL_INTERVAL_SECONDS }} + + - name: Show failed logs + if: failure() + run: | + gh run view "${RUN_ID}" --repo "${TARGET_OWNER}/${TARGET_REPO}" --log-failed || true + env: + GH_TOKEN: ${{ steps.github-app-token.outputs.token }} + RUN_ID: ${{ steps.monitor.outputs.run_id }} diff --git a/.gitignore b/.gitignore index f7ca596..f15b6a3 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,6 @@ _gen/ .DS_Store public/* +resources/ +node_modules/ +_vendor/ diff --git a/.node-version b/.node-version new file mode 100644 index 0000000..a45fd52 --- /dev/null +++ b/.node-version @@ -0,0 +1 @@ +24 diff --git a/README.md b/README.md index 22bcaf4..9dfb810 100644 --- a/README.md +++ b/README.md @@ -3,23 +3,34 @@ [![Radius Website](https://github.com/radius-project/website/actions/workflows/main.yml/badge.svg)](https://github.com/radius-project/website/actions/workflows/main.yml) [![License](https://img.shields.io/github/license/radius-project/website)](https://github.com/radius-project/website/blob/main/LICENSE) -This repository contains the source code for the Radius website, available at https://radapp.io. +This repository contains the source code for the Radius website, available at . ## Contributing -1. Download dependencies - - [Hugo extended](https://gohugo.io/getting-started/installing) +1. Install dependencies + - [Node.js](https://nodejs.org/) (see [`.node-version`](./.node-version) for the expected version) 1. Clone the repository + ```bash git clone https://github.com/radius-project/website.git cd website ``` + +1. Install npm packages (this also installs the pinned Hugo extended binary) + + ```bash + npm install + ``` + 1. Run the development server + ```bash - hugo server + npm run start ``` -1. Open a browser to http://localhost:1313 + + To include draft and future-dated content, use `npm run start:drafts` instead. +1. Open a browser to ## Code of Conduct diff --git a/config/_default/config.toml b/config/_default/config.toml index 280845b..d31e7d8 100644 --- a/config/_default/config.toml +++ b/config/_default/config.toml @@ -14,3 +14,9 @@ googleAnalytics = "G-0EZZYE4MPR" # example : UA-123-45 # unsafe html [markup.goldmark.renderer] unsafe = true + +# Hugo Modules +[module] +[module.hugoVersion] +extended = true +min = "0.157.0" diff --git a/config/_default/languages.toml b/config/_default/languages.toml index 680429a..386b943 100644 --- a/config/_default/languages.toml +++ b/config/_default/languages.toml @@ -1,6 +1,6 @@ ############################# English ############################ [en] -languageName = "En" +label = "En" title = "Radius" contentDir = "content" weight = 1 diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..610642d --- /dev/null +++ b/go.mod @@ -0,0 +1,3 @@ +module github.com/radius-project/website + +go 1.26.4 diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..ee651b9 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,230 @@ +{ + "name": "radius-website", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "radius-website", + "version": "0.0.0", + "license": "Apache-2.0", + "devDependencies": { + "hugo-extended": "0.163.3", + "rimraf": "^6.1.3" + } + }, + "node_modules/@isaacs/fs-minipass": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", + "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^7.0.4" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/adm-zip": { + "version": "0.5.17", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.17.tgz", + "integrity": "sha512-+Ut8d9LLqwEvHHJl1+PIHqoyDxFgVN847JTVM3Izi3xHDWPE4UtzzXysMZQs64DMcrJfBeS/uoEP4AD3HQHnQQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0" + } + }, + "node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/brace-expansion": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.6.tgz", + "integrity": "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/chownr": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", + "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/glob": { + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", + "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "minimatch": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/hugo-extended": { + "version": "0.163.3", + "resolved": "https://registry.npmjs.org/hugo-extended/-/hugo-extended-0.163.3.tgz", + "integrity": "sha512-YcH9VBNW9N01cEQ2TsmFEaUikmmFu4dytBLiX2BFWM+IJdejxcSTfIu/bNgGYVJOARYxJTXJwyPqr1zIndNcCQ==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "adm-zip": "^0.5.17", + "tar": "^7.5.15" + }, + "bin": { + "hugo": "dist/cli.mjs", + "hugo-extended": "dist/cli.mjs" + }, + "engines": { + "node": ">=18.17" + } + }, + "node_modules/lru-cache": { + "version": "11.5.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.1.tgz", + "integrity": "sha512-RPimw/7aMdv2oqRrxKwvZXcPfwBrn/JZ2xYcY9Hus/6LaS3VOAKVWKWgNLCFSiOm1ESXinjsDlidVU7JlnCN2A==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/minimatch": { + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.5" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minipass": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", + "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minizlib": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz", + "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "minipass": "^7.1.2" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true, + "license": "BlueOak-1.0.0" + }, + "node_modules/path-scurry": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", + "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.1.3.tgz", + "integrity": "sha512-LKg+Cr2ZF61fkcaK1UdkH2yEBBKnYjTyWzTJT6KNPcSPaiT7HSdhtMXQuN5wkTX0Xu72KQ1l8S42rlmexS2hSA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "glob": "^13.0.3", + "package-json-from-dist": "^1.0.1" + }, + "bin": { + "rimraf": "dist/esm/bin.mjs" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/tar": { + "version": "7.5.16", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.16.tgz", + "integrity": "sha512-56adEpPMouktRlBLXiaYFFzZ/3+JXa8P9n7WbR+ibIjtviN55mEaOkiysCnPnWm+7kkui1Dn8J9l+g6zV8731w==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/fs-minipass": "^4.0.0", + "chownr": "^3.0.0", + "minipass": "^7.1.2", + "minizlib": "^3.1.0", + "yallist": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/yallist": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", + "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..bd32d4f --- /dev/null +++ b/package.json @@ -0,0 +1,29 @@ +{ + "name": "radius-website", + "version": "0.0.0", + "description": "Source for the Radius website (https://radapp.io).", + "license": "Apache-2.0", + "homepage": "https://radapp.io", + "private": true, + "repository": { + "type": "git", + "url": "https://github.com/radius-project/website.git" + }, + "devDependencies": { + "hugo-extended": "0.163.3", + "rimraf": "^6.1.3" + }, + "scripts": { + "build": "hugo --gc --minify", + "build:preview": "hugo --gc --minify --buildDrafts --buildFuture", + "start": "hugo server", + "start:drafts": "hugo server --buildDrafts --navigateToChanged", + "hugo": "hugo", + "hugo:version": "hugo version", + "hugo:mod:get": "hugo mod get", + "hugo:mod:tidy": "hugo mod tidy", + "hugo:mod:clean": "hugo mod clean --all", + "hugo:mod:graph": "hugo mod graph", + "clean": "hugo --gc && rimraf public resources" + } +} diff --git a/static/ms65434265.txt b/static/ms65434265.txt index 308b5d8..ec1e68c 100644 --- a/static/ms65434265.txt +++ b/static/ms65434265.txt @@ -1,5 +1,5 @@ -{ - "Description": "Domain ownership verification file for Microsoft 365 - place in the website root", - "Domain": "radapp.io", - "Id": "4c4247e0-35f4-4882-98d6-81288f23afe7" +{ + "Description": "Domain ownership verification file for Microsoft 365 - place in the website root", + "Domain": "radapp.io", + "Id": "4c4247e0-35f4-4882-98d6-81288f23afe7" } \ No newline at end of file diff --git a/themes/bigspring-light/assets/plugins/bootstrap/bootstrap.min.js b/themes/bigspring-light/assets/plugins/bootstrap/bootstrap.min.js index 9af37f6..02ba388 100644 --- a/themes/bigspring-light/assets/plugins/bootstrap/bootstrap.min.js +++ b/themes/bigspring-light/assets/plugins/bootstrap/bootstrap.min.js @@ -1,5168 +1,5168 @@ -/*! - * Bootstrap v4.6.0 (https://getbootstrap.com/) - * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */ -(function (global, factory) { - typeof exports === "object" && typeof module !== "undefined" - ? factory(exports, require("jquery"), require("popper.js")) - : typeof define === "function" && define.amd - ? define(["exports", "jquery", "popper.js"], factory) - : ((global = - typeof globalThis !== "undefined" ? globalThis : global || self), - factory((global.bootstrap = {}), global.jQuery, global.Popper)); -})(this, function (exports, $, Popper) { - "use strict"; - - function _interopDefaultLegacy(e) { - return e && typeof e === "object" && "default" in e ? e : { default: e }; - } - - var $__default = /*#__PURE__*/ _interopDefaultLegacy($); - var Popper__default = /*#__PURE__*/ _interopDefaultLegacy(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 _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 (v4.6.0): util.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ - /** - * ------------------------------------------------------------------------ - * Private TransitionEnd Helpers - * ------------------------------------------------------------------------ - */ - - var TRANSITION_END = "transitionend"; - var MAX_UID = 1000000; - var MILLISECONDS_MULTIPLIER = 1000; // Shoutout AngusCroll (https://goo.gl/pxwQGp) - - function toType(obj) { - if (obj === null || typeof obj === "undefined") { - return "" + obj; - } - - return {}.toString - .call(obj) - .match(/\s([a-z]+)/i)[1] - .toLowerCase(); - } - - function getSpecialTransitionEndEvent() { - return { - bindType: TRANSITION_END, - delegateType: TRANSITION_END, - handle: function handle(event) { - if ($__default["default"](event.target).is(this)) { - return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params - } - - return undefined; - }, - }; - } - - function transitionEndEmulator(duration) { - var _this = this; - - var called = false; - $__default["default"](this).one(Util.TRANSITION_END, function () { - called = true; - }); - setTimeout(function () { - if (!called) { - Util.triggerTransitionEnd(_this); - } - }, duration); - return this; - } - - function setTransitionEndSupport() { - $__default["default"].fn.emulateTransitionEnd = transitionEndEmulator; - $__default["default"].event.special[Util.TRANSITION_END] = - getSpecialTransitionEndEvent(); - } - /** - * -------------------------------------------------------------------------- - * Public Util Api - * -------------------------------------------------------------------------- - */ - - var Util = { - TRANSITION_END: "bsTransitionEnd", - getUID: function getUID(prefix) { - do { - prefix += ~~(Math.random() * MAX_UID); // "~~" 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 === "#") { - var hrefAttr = element.getAttribute("href"); - selector = hrefAttr && hrefAttr !== "#" ? hrefAttr.trim() : ""; - } - - try { - return document.querySelector(selector) ? selector : null; - } catch (_) { - return null; - } - }, - getTransitionDurationFromElement: function getTransitionDurationFromElement( - element - ) { - if (!element) { - return 0; - } // Get transition-duration of the element - - var transitionDuration = $__default["default"](element).css( - "transition-duration" - ); - var transitionDelay = - $__default["default"](element).css("transition-delay"); - var floatTransitionDuration = parseFloat(transitionDuration); - var floatTransitionDelay = 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 ( - (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * - MILLISECONDS_MULTIPLIER - ); - }, - reflow: function reflow(element) { - return element.offsetHeight; - }, - triggerTransitionEnd: function triggerTransitionEnd(element) { - $__default["default"](element).trigger(TRANSITION_END); - }, - supportsTransitionEnd: function supportsTransitionEnd() { - return Boolean(TRANSITION_END); - }, - isElement: function isElement(obj) { - return (obj[0] || obj).nodeType; - }, - typeCheckConfig: function typeCheckConfig( - componentName, - config, - configTypes - ) { - for (var property in configTypes) { - if (Object.prototype.hasOwnProperty.call(configTypes, property)) { - var expectedTypes = configTypes[property]; - var value = config[property]; - var valueType = - value && Util.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 + '".') - ); - } - } - } - }, - 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 Util.findShadowRoot(element.parentNode); - }, - jQueryDetection: function jQueryDetection() { - if (typeof $__default["default"] === "undefined") { - throw new TypeError( - "Bootstrap's JavaScript requires jQuery. jQuery must be included before Bootstrap's JavaScript." - ); - } - - var version = $__default["default"].fn.jquery.split(" ")[0].split("."); - var minMajor = 1; - var ltMajor = 2; - var minMinor = 9; - var minPatch = 1; - var maxMajor = 4; - - if ( - (version[0] < ltMajor && version[1] < minMinor) || - (version[0] === minMajor && - version[1] === minMinor && - version[2] < minPatch) || - version[0] >= maxMajor - ) { - throw new Error( - "Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0" - ); - } - }, - }; - Util.jQueryDetection(); - setTransitionEndSupport(); - - /** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - - var NAME = "alert"; - var VERSION = "4.6.0"; - var DATA_KEY = "bs.alert"; - var EVENT_KEY = "." + DATA_KEY; - var DATA_API_KEY = ".data-api"; - var JQUERY_NO_CONFLICT = $__default["default"].fn[NAME]; - var SELECTOR_DISMISS = '[data-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 CLASS_NAME_ALERT = "alert"; - var CLASS_NAME_FADE = "fade"; - var CLASS_NAME_SHOW = "show"; - /** - * ------------------------------------------------------------------------ - * Class Definition - * ------------------------------------------------------------------------ - */ - - var Alert = /*#__PURE__*/ (function () { - function Alert(element) { - this._element = element; - } // Getters - - var _proto = Alert.prototype; - - // Public - _proto.close = function close(element) { - var rootElement = this._element; - - if (element) { - rootElement = this._getRootElement(element); - } - - var customEvent = this._triggerCloseEvent(rootElement); - - if (customEvent.isDefaultPrevented()) { - return; - } - - this._removeElement(rootElement); - }; - - _proto.dispose = function dispose() { - $__default["default"].removeData(this._element, DATA_KEY); - this._element = null; - }; // Private - - _proto._getRootElement = function _getRootElement(element) { - var selector = Util.getSelectorFromElement(element); - var parent = false; - - if (selector) { - parent = document.querySelector(selector); - } - - if (!parent) { - parent = $__default["default"](element).closest( - "." + CLASS_NAME_ALERT - )[0]; - } - - return parent; - }; - - _proto._triggerCloseEvent = function _triggerCloseEvent(element) { - var closeEvent = $__default["default"].Event(EVENT_CLOSE); - $__default["default"](element).trigger(closeEvent); - return closeEvent; - }; - - _proto._removeElement = function _removeElement(element) { - var _this = this; - - $__default["default"](element).removeClass(CLASS_NAME_SHOW); - - if (!$__default["default"](element).hasClass(CLASS_NAME_FADE)) { - this._destroyElement(element); - - return; - } - - var transitionDuration = Util.getTransitionDurationFromElement(element); - $__default["default"](element) - .one(Util.TRANSITION_END, function (event) { - return _this._destroyElement(element, event); - }) - .emulateTransitionEnd(transitionDuration); - }; - - _proto._destroyElement = function _destroyElement(element) { - $__default["default"](element).detach().trigger(EVENT_CLOSED).remove(); - }; // Static - - Alert._jQueryInterface = function _jQueryInterface(config) { - return this.each(function () { - var $element = $__default["default"](this); - var data = $element.data(DATA_KEY); - - if (!data) { - data = new Alert(this); - $element.data(DATA_KEY, data); - } - - 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: "VERSION", - get: function get() { - return VERSION; - }, - }, - ]); - - return Alert; - })(); - /** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ - - $__default["default"](document).on( - EVENT_CLICK_DATA_API, - SELECTOR_DISMISS, - Alert._handleDismiss(new Alert()) - ); - /** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - */ - - $__default["default"].fn[NAME] = Alert._jQueryInterface; - $__default["default"].fn[NAME].Constructor = Alert; - - $__default["default"].fn[NAME].noConflict = function () { - $__default["default"].fn[NAME] = JQUERY_NO_CONFLICT; - return Alert._jQueryInterface; - }; - - /** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - - var NAME$1 = "button"; - var VERSION$1 = "4.6.0"; - var DATA_KEY$1 = "bs.button"; - var EVENT_KEY$1 = "." + DATA_KEY$1; - var DATA_API_KEY$1 = ".data-api"; - var JQUERY_NO_CONFLICT$1 = $__default["default"].fn[NAME$1]; - var CLASS_NAME_ACTIVE = "active"; - var CLASS_NAME_BUTTON = "btn"; - var CLASS_NAME_FOCUS = "focus"; - var SELECTOR_DATA_TOGGLE_CARROT = '[data-toggle^="button"]'; - var SELECTOR_DATA_TOGGLES = '[data-toggle="buttons"]'; - var SELECTOR_DATA_TOGGLE = '[data-toggle="button"]'; - var SELECTOR_DATA_TOGGLES_BUTTONS = '[data-toggle="buttons"] .btn'; - var SELECTOR_INPUT = 'input:not([type="hidden"])'; - var SELECTOR_ACTIVE = ".active"; - var SELECTOR_BUTTON = ".btn"; - var EVENT_CLICK_DATA_API$1 = "click" + EVENT_KEY$1 + DATA_API_KEY$1; - var EVENT_FOCUS_BLUR_DATA_API = - "focus" + - EVENT_KEY$1 + - DATA_API_KEY$1 + - " " + - ("blur" + EVENT_KEY$1 + DATA_API_KEY$1); - var EVENT_LOAD_DATA_API = "load" + EVENT_KEY$1 + DATA_API_KEY$1; - /** - * ------------------------------------------------------------------------ - * Class Definition - * ------------------------------------------------------------------------ - */ - - var Button = /*#__PURE__*/ (function () { - function Button(element) { - this._element = element; - this.shouldAvoidTriggerChange = false; - } // Getters - - var _proto = Button.prototype; - - // Public - _proto.toggle = function toggle() { - var triggerChangeEvent = true; - var addAriaPressed = true; - var rootElement = $__default["default"](this._element).closest( - SELECTOR_DATA_TOGGLES - )[0]; - - if (rootElement) { - var input = this._element.querySelector(SELECTOR_INPUT); - - if (input) { - if (input.type === "radio") { - if ( - input.checked && - this._element.classList.contains(CLASS_NAME_ACTIVE) - ) { - triggerChangeEvent = false; - } else { - var activeElement = rootElement.querySelector(SELECTOR_ACTIVE); - - if (activeElement) { - $__default["default"](activeElement).removeClass( - CLASS_NAME_ACTIVE - ); - } - } - } - - if (triggerChangeEvent) { - // if it's not a radio button or checkbox don't add a pointless/invalid checked property to the input - if (input.type === "checkbox" || input.type === "radio") { - input.checked = - !this._element.classList.contains(CLASS_NAME_ACTIVE); - } - - if (!this.shouldAvoidTriggerChange) { - $__default["default"](input).trigger("change"); - } - } - - input.focus(); - addAriaPressed = false; - } - } - - if ( - !( - this._element.hasAttribute("disabled") || - this._element.classList.contains("disabled") - ) - ) { - if (addAriaPressed) { - this._element.setAttribute( - "aria-pressed", - !this._element.classList.contains(CLASS_NAME_ACTIVE) - ); - } - - if (triggerChangeEvent) { - $__default["default"](this._element).toggleClass(CLASS_NAME_ACTIVE); - } - } - }; - - _proto.dispose = function dispose() { - $__default["default"].removeData(this._element, DATA_KEY$1); - this._element = null; - }; // Static - - Button._jQueryInterface = function _jQueryInterface( - config, - avoidTriggerChange - ) { - return this.each(function () { - var $element = $__default["default"](this); - var data = $element.data(DATA_KEY$1); - - if (!data) { - data = new Button(this); - $element.data(DATA_KEY$1, data); - } - - data.shouldAvoidTriggerChange = avoidTriggerChange; - - if (config === "toggle") { - data[config](); - } - }); - }; - - _createClass(Button, null, [ - { - key: "VERSION", - get: function get() { - return VERSION$1; - }, - }, - ]); - - return Button; - })(); - /** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ - - $__default["default"](document) - .on(EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE_CARROT, function (event) { - var button = event.target; - var initialButton = button; - - if (!$__default["default"](button).hasClass(CLASS_NAME_BUTTON)) { - button = $__default["default"](button).closest(SELECTOR_BUTTON)[0]; - } - - if ( - !button || - button.hasAttribute("disabled") || - button.classList.contains("disabled") - ) { - event.preventDefault(); // work around Firefox bug #1540995 - } else { - var inputBtn = button.querySelector(SELECTOR_INPUT); - - if ( - inputBtn && - (inputBtn.hasAttribute("disabled") || - inputBtn.classList.contains("disabled")) - ) { - event.preventDefault(); // work around Firefox bug #1540995 - - return; - } - - if (initialButton.tagName === "INPUT" || button.tagName !== "LABEL") { - Button._jQueryInterface.call( - $__default["default"](button), - "toggle", - initialButton.tagName === "INPUT" - ); - } - } - }) - .on( - EVENT_FOCUS_BLUR_DATA_API, - SELECTOR_DATA_TOGGLE_CARROT, - function (event) { - var button = $__default["default"](event.target).closest( - SELECTOR_BUTTON - )[0]; - $__default["default"](button).toggleClass( - CLASS_NAME_FOCUS, - /^focus(in)?$/.test(event.type) - ); - } - ); - $__default["default"](window).on(EVENT_LOAD_DATA_API, function () { - // ensure correct active class is set to match the controls' actual values/states - // find all checkboxes/readio buttons inside data-toggle groups - var buttons = [].slice.call( - document.querySelectorAll(SELECTOR_DATA_TOGGLES_BUTTONS) - ); - - for (var i = 0, len = buttons.length; i < len; i++) { - var button = buttons[i]; - var input = button.querySelector(SELECTOR_INPUT); - - if (input.checked || input.hasAttribute("checked")) { - button.classList.add(CLASS_NAME_ACTIVE); - } else { - button.classList.remove(CLASS_NAME_ACTIVE); - } - } // find all button toggles - - buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE)); - - for (var _i = 0, _len = buttons.length; _i < _len; _i++) { - var _button = buttons[_i]; - - if (_button.getAttribute("aria-pressed") === "true") { - _button.classList.add(CLASS_NAME_ACTIVE); - } else { - _button.classList.remove(CLASS_NAME_ACTIVE); - } - } - }); - /** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - */ - - $__default["default"].fn[NAME$1] = Button._jQueryInterface; - $__default["default"].fn[NAME$1].Constructor = Button; - - $__default["default"].fn[NAME$1].noConflict = function () { - $__default["default"].fn[NAME$1] = JQUERY_NO_CONFLICT$1; - return Button._jQueryInterface; - }; - - /** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - - var NAME$2 = "carousel"; - var VERSION$2 = "4.6.0"; - var DATA_KEY$2 = "bs.carousel"; - var EVENT_KEY$2 = "." + DATA_KEY$2; - var DATA_API_KEY$2 = ".data-api"; - var JQUERY_NO_CONFLICT$2 = $__default["default"].fn[NAME$2]; - var ARROW_LEFT_KEYCODE = 37; // KeyboardEvent.which value for left arrow key - - var ARROW_RIGHT_KEYCODE = 39; // KeyboardEvent.which value for right arrow key - - 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$1 = "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_RIGHT = "carousel-item-right"; - var CLASS_NAME_LEFT = "carousel-item-left"; - var CLASS_NAME_NEXT = "carousel-item-next"; - var CLASS_NAME_PREV = "carousel-item-prev"; - var CLASS_NAME_POINTER_EVENT = "pointer-event"; - var SELECTOR_ACTIVE$1 = ".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-slide], [data-slide-to]"; - var SELECTOR_DATA_RIDE = '[data-ride="carousel"]'; - var PointerType = { - TOUCH: "touch", - PEN: "pen", - }; - /** - * ------------------------------------------------------------------------ - * Class Definition - * ------------------------------------------------------------------------ - */ - - var Carousel = /*#__PURE__*/ (function () { - function Carousel(element, config) { - 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._element = element; - this._indicatorsElement = - this._element.querySelector(SELECTOR_INDICATORS); - this._touchSupported = - "ontouchstart" in document.documentElement || - navigator.maxTouchPoints > 0; - this._pointerEvent = Boolean( - window.PointerEvent || window.MSPointerEvent - ); - - this._addEventListeners(); - } // Getters - - var _proto = Carousel.prototype; - - // Public - _proto.next = function next() { - if (!this._isSliding) { - this._slide(DIRECTION_NEXT); - } - }; - - _proto.nextWhenVisible = function nextWhenVisible() { - var $element = $__default["default"](this._element); // Don't call next when the page isn't visible - // or the carousel or its parent isn't visible - - if ( - !document.hidden && - $element.is(":visible") && - $element.css("visibility") !== "hidden" - ) { - this.next(); - } - }; - - _proto.prev = function prev() { - if (!this._isSliding) { - this._slide(DIRECTION_PREV); - } - }; - - _proto.pause = function pause(event) { - if (!event) { - this._isPaused = true; - } - - if (this._element.querySelector(SELECTOR_NEXT_PREV)) { - Util.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.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 _this = this; - - this._activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM); - - var activeIndex = this._getItemIndex(this._activeElement); - - if (index > this._items.length - 1 || index < 0) { - return; - } - - if (this._isSliding) { - $__default["default"](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_PREV; - - this._slide(direction, this._items[index]); - }; - - _proto.dispose = function dispose() { - $__default["default"](this._element).off(EVENT_KEY$2); - $__default["default"].removeData(this._element, DATA_KEY$2); - 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 - - _proto._getConfig = function _getConfig(config) { - config = _extends({}, Default, config); - Util.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 _this2 = this; - - if (this._config.keyboard) { - $__default["default"](this._element).on( - EVENT_KEYDOWN, - function (event) { - return _this2._keydown(event); - } - ); - } - - if (this._config.pause === "hover") { - $__default["default"](this._element) - .on(EVENT_MOUSEENTER, function (event) { - return _this2.pause(event); - }) - .on(EVENT_MOUSELEAVE, function (event) { - return _this2.cycle(event); - }); - } - - if (this._config.touch) { - this._addTouchEventListeners(); - } - }; - - _proto._addTouchEventListeners = function _addTouchEventListeners() { - var _this3 = this; - - if (!this._touchSupported) { - return; - } - - var start = function start(event) { - if ( - _this3._pointerEvent && - PointerType[event.originalEvent.pointerType.toUpperCase()] - ) { - _this3.touchStartX = event.originalEvent.clientX; - } else if (!_this3._pointerEvent) { - _this3.touchStartX = event.originalEvent.touches[0].clientX; - } - }; - - var move = function move(event) { - // ensure swiping with one touch and not pinching - if ( - event.originalEvent.touches && - event.originalEvent.touches.length > 1 - ) { - _this3.touchDeltaX = 0; - } else { - _this3.touchDeltaX = - event.originalEvent.touches[0].clientX - _this3.touchStartX; - } - }; - - var end = function end(event) { - if ( - _this3._pointerEvent && - PointerType[event.originalEvent.pointerType.toUpperCase()] - ) { - _this3.touchDeltaX = event.originalEvent.clientX - _this3.touchStartX; - } - - _this3._handleSwipe(); - - if (_this3._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 - _this3.pause(); - - if (_this3.touchTimeout) { - clearTimeout(_this3.touchTimeout); - } - - _this3.touchTimeout = setTimeout(function (event) { - return _this3.cycle(event); - }, TOUCHEVENT_COMPAT_WAIT + _this3._config.interval); - } - }; - - $__default["default"]( - this._element.querySelectorAll(SELECTOR_ITEM_IMG) - ).on(EVENT_DRAG_START, function (e) { - return e.preventDefault(); - }); - - if (this._pointerEvent) { - $__default["default"](this._element).on( - EVENT_POINTERDOWN, - function (event) { - return start(event); - } - ); - $__default["default"](this._element).on( - EVENT_POINTERUP, - function (event) { - return end(event); - } - ); - - this._element.classList.add(CLASS_NAME_POINTER_EVENT); - } else { - $__default["default"](this._element).on( - EVENT_TOUCHSTART, - function (event) { - return start(event); - } - ); - $__default["default"](this._element).on( - EVENT_TOUCHMOVE, - function (event) { - return move(event); - } - ); - $__default["default"](this._element).on( - EVENT_TOUCHEND, - function (event) { - return end(event); - } - ); - } - }; - - _proto._keydown = function _keydown(event) { - if (/input|textarea/i.test(event.target.tagName)) { - return; - } - - switch (event.which) { - case ARROW_LEFT_KEYCODE: - event.preventDefault(); - this.prev(); - break; - - case ARROW_RIGHT_KEYCODE: - event.preventDefault(); - this.next(); - break; - } - }; - - _proto._getItemIndex = function _getItemIndex(element) { - this._items = - element && element.parentNode - ? [].slice.call(element.parentNode.querySelectorAll(SELECTOR_ITEM)) - : []; - 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( - this._element.querySelector(SELECTOR_ACTIVE_ITEM) - ); - - var slideEvent = $__default["default"].Event(EVENT_SLIDE, { - relatedTarget: relatedTarget, - direction: eventDirectionName, - from: fromIndex, - to: targetIndex, - }); - $__default["default"](this._element).trigger(slideEvent); - return slideEvent; - }; - - _proto._setActiveIndicatorElement = function _setActiveIndicatorElement( - element - ) { - if (this._indicatorsElement) { - var indicators = [].slice.call( - this._indicatorsElement.querySelectorAll(SELECTOR_ACTIVE$1) - ); - $__default["default"](indicators).removeClass(CLASS_NAME_ACTIVE$1); - - var nextIndicator = - this._indicatorsElement.children[this._getItemIndex(element)]; - - if (nextIndicator) { - $__default["default"](nextIndicator).addClass(CLASS_NAME_ACTIVE$1); - } - } - }; - - _proto._updateInterval = function _updateInterval() { - var element = - this._activeElement || - this._element.querySelector(SELECTOR_ACTIVE_ITEM); - - if (!element) { - return; - } - - var elementInterval = parseInt(element.getAttribute("data-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 _this4 = this; - - var activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM); - - 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_LEFT; - orderClassName = CLASS_NAME_NEXT; - eventDirectionName = DIRECTION_LEFT; - } else { - directionalClassName = CLASS_NAME_RIGHT; - orderClassName = CLASS_NAME_PREV; - eventDirectionName = DIRECTION_RIGHT; - } - - if ( - nextElement && - $__default["default"](nextElement).hasClass(CLASS_NAME_ACTIVE$1) - ) { - this._isSliding = false; - return; - } - - var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName); - - 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); - - this._activeElement = nextElement; - var slidEvent = $__default["default"].Event(EVENT_SLID, { - relatedTarget: nextElement, - direction: eventDirectionName, - from: activeElementIndex, - to: nextElementIndex, - }); - - if ($__default["default"](this._element).hasClass(CLASS_NAME_SLIDE)) { - $__default["default"](nextElement).addClass(orderClassName); - Util.reflow(nextElement); - $__default["default"](activeElement).addClass(directionalClassName); - $__default["default"](nextElement).addClass(directionalClassName); - var transitionDuration = - Util.getTransitionDurationFromElement(activeElement); - $__default["default"](activeElement) - .one(Util.TRANSITION_END, function () { - $__default["default"](nextElement) - .removeClass(directionalClassName + " " + orderClassName) - .addClass(CLASS_NAME_ACTIVE$1); - $__default["default"](activeElement).removeClass( - CLASS_NAME_ACTIVE$1 + - " " + - orderClassName + - " " + - directionalClassName - ); - _this4._isSliding = false; - setTimeout(function () { - return $__default["default"](_this4._element).trigger(slidEvent); - }, 0); - }) - .emulateTransitionEnd(transitionDuration); - } else { - $__default["default"](activeElement).removeClass(CLASS_NAME_ACTIVE$1); - $__default["default"](nextElement).addClass(CLASS_NAME_ACTIVE$1); - this._isSliding = false; - $__default["default"](this._element).trigger(slidEvent); - } - - if (isCycling) { - this.cycle(); - } - }; // Static - - Carousel._jQueryInterface = function _jQueryInterface(config) { - return this.each(function () { - var data = $__default["default"](this).data(DATA_KEY$2); - - var _config = _extends({}, Default, $__default["default"](this).data()); - - if (typeof config === "object") { - _config = _extends({}, _config, config); - } - - var action = typeof config === "string" ? config : _config.slide; - - if (!data) { - data = new Carousel(this, _config); - $__default["default"](this).data(DATA_KEY$2, data); - } - - 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._dataApiClickHandler = function _dataApiClickHandler(event) { - var selector = Util.getSelectorFromElement(this); - - if (!selector) { - return; - } - - var target = $__default["default"](selector)[0]; - - if ( - !target || - !$__default["default"](target).hasClass(CLASS_NAME_CAROUSEL) - ) { - return; - } - - var config = _extends( - {}, - $__default["default"](target).data(), - $__default["default"](this).data() - ); - - var slideIndex = this.getAttribute("data-slide-to"); - - if (slideIndex) { - config.interval = false; - } - - Carousel._jQueryInterface.call($__default["default"](target), config); - - if (slideIndex) { - $__default["default"](target).data(DATA_KEY$2).to(slideIndex); - } - - event.preventDefault(); - }; - - _createClass(Carousel, null, [ - { - key: "VERSION", - get: function get() { - return VERSION$2; - }, - }, - { - key: "Default", - get: function get() { - return Default; - }, - }, - ]); - - return Carousel; - })(); - /** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ - - $__default["default"](document).on( - EVENT_CLICK_DATA_API$2, - SELECTOR_DATA_SLIDE, - Carousel._dataApiClickHandler - ); - $__default["default"](window).on(EVENT_LOAD_DATA_API$1, function () { - var carousels = [].slice.call( - document.querySelectorAll(SELECTOR_DATA_RIDE) - ); - - for (var i = 0, len = carousels.length; i < len; i++) { - var $carousel = $__default["default"](carousels[i]); - - Carousel._jQueryInterface.call($carousel, $carousel.data()); - } - }); - /** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - */ - - $__default["default"].fn[NAME$2] = Carousel._jQueryInterface; - $__default["default"].fn[NAME$2].Constructor = Carousel; - - $__default["default"].fn[NAME$2].noConflict = function () { - $__default["default"].fn[NAME$2] = JQUERY_NO_CONFLICT$2; - return Carousel._jQueryInterface; - }; - - /** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - - var NAME$3 = "collapse"; - var VERSION$3 = "4.6.0"; - var DATA_KEY$3 = "bs.collapse"; - var EVENT_KEY$3 = "." + DATA_KEY$3; - var DATA_API_KEY$3 = ".data-api"; - var JQUERY_NO_CONFLICT$3 = $__default["default"].fn[NAME$3]; - 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$1 = "show"; - var CLASS_NAME_COLLAPSE = "collapse"; - var CLASS_NAME_COLLAPSING = "collapsing"; - var CLASS_NAME_COLLAPSED = "collapsed"; - var DIMENSION_WIDTH = "width"; - var DIMENSION_HEIGHT = "height"; - var SELECTOR_ACTIVES = ".show, .collapsing"; - var SELECTOR_DATA_TOGGLE$1 = '[data-toggle="collapse"]'; - /** - * ------------------------------------------------------------------------ - * Class Definition - * ------------------------------------------------------------------------ - */ - - var Collapse = /*#__PURE__*/ (function () { - function Collapse(element, config) { - this._isTransitioning = false; - this._element = element; - this._config = this._getConfig(config); - this._triggerArray = [].slice.call( - document.querySelectorAll( - '[data-toggle="collapse"][href="#' + - element.id + - '"],' + - ('[data-toggle="collapse"][data-target="#' + element.id + '"]') - ) - ); - var toggleList = [].slice.call( - document.querySelectorAll(SELECTOR_DATA_TOGGLE$1) - ); - - for (var i = 0, len = toggleList.length; i < len; i++) { - var elem = toggleList[i]; - var selector = Util.getSelectorFromElement(elem); - var filterElement = [].slice - .call(document.querySelectorAll(selector)) - .filter(function (foundElem) { - return foundElem === element; - }); - - if (selector !== null && filterElement.length > 0) { - 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(); - } - } // Getters - - var _proto = Collapse.prototype; - - // Public - _proto.toggle = function toggle() { - if ($__default["default"](this._element).hasClass(CLASS_NAME_SHOW$1)) { - this.hide(); - } else { - this.show(); - } - }; - - _proto.show = function show() { - var _this = this; - - if ( - this._isTransitioning || - $__default["default"](this._element).hasClass(CLASS_NAME_SHOW$1) - ) { - return; - } - - var actives; - var activesData; - - if (this._parent) { - actives = [].slice - .call(this._parent.querySelectorAll(SELECTOR_ACTIVES)) - .filter(function (elem) { - if (typeof _this._config.parent === "string") { - return elem.getAttribute("data-parent") === _this._config.parent; - } - - return elem.classList.contains(CLASS_NAME_COLLAPSE); - }); - - if (actives.length === 0) { - actives = null; - } - } - - if (actives) { - activesData = $__default["default"](actives) - .not(this._selector) - .data(DATA_KEY$3); - - if (activesData && activesData._isTransitioning) { - return; - } - } - - var startEvent = $__default["default"].Event(EVENT_SHOW); - $__default["default"](this._element).trigger(startEvent); - - if (startEvent.isDefaultPrevented()) { - return; - } - - if (actives) { - Collapse._jQueryInterface.call( - $__default["default"](actives).not(this._selector), - "hide" - ); - - if (!activesData) { - $__default["default"](actives).data(DATA_KEY$3, null); - } - } - - var dimension = this._getDimension(); - - $__default["default"](this._element) - .removeClass(CLASS_NAME_COLLAPSE) - .addClass(CLASS_NAME_COLLAPSING); - this._element.style[dimension] = 0; - - if (this._triggerArray.length) { - $__default["default"](this._triggerArray) - .removeClass(CLASS_NAME_COLLAPSED) - .attr("aria-expanded", true); - } - - this.setTransitioning(true); - - var complete = function complete() { - $__default["default"](_this._element) - .removeClass(CLASS_NAME_COLLAPSING) - .addClass(CLASS_NAME_COLLAPSE + " " + CLASS_NAME_SHOW$1); - _this._element.style[dimension] = ""; - - _this.setTransitioning(false); - - $__default["default"](_this._element).trigger(EVENT_SHOWN); - }; - - var capitalizedDimension = - dimension[0].toUpperCase() + dimension.slice(1); - var scrollSize = "scroll" + capitalizedDimension; - var transitionDuration = Util.getTransitionDurationFromElement( - this._element - ); - $__default["default"](this._element) - .one(Util.TRANSITION_END, complete) - .emulateTransitionEnd(transitionDuration); - this._element.style[dimension] = this._element[scrollSize] + "px"; - }; - - _proto.hide = function hide() { - var _this2 = this; - - if ( - this._isTransitioning || - !$__default["default"](this._element).hasClass(CLASS_NAME_SHOW$1) - ) { - return; - } - - var startEvent = $__default["default"].Event(EVENT_HIDE); - $__default["default"](this._element).trigger(startEvent); - - if (startEvent.isDefaultPrevented()) { - return; - } - - var dimension = this._getDimension(); - - this._element.style[dimension] = - this._element.getBoundingClientRect()[dimension] + "px"; - Util.reflow(this._element); - $__default["default"](this._element) - .addClass(CLASS_NAME_COLLAPSING) - .removeClass(CLASS_NAME_COLLAPSE + " " + CLASS_NAME_SHOW$1); - var triggerArrayLength = this._triggerArray.length; - - if (triggerArrayLength > 0) { - for (var i = 0; i < triggerArrayLength; i++) { - var trigger = this._triggerArray[i]; - var selector = Util.getSelectorFromElement(trigger); - - if (selector !== null) { - var $elem = $__default["default"]( - [].slice.call(document.querySelectorAll(selector)) - ); - - if (!$elem.hasClass(CLASS_NAME_SHOW$1)) { - $__default["default"](trigger) - .addClass(CLASS_NAME_COLLAPSED) - .attr("aria-expanded", false); - } - } - } - } - - this.setTransitioning(true); - - var complete = function complete() { - _this2.setTransitioning(false); - - $__default["default"](_this2._element) - .removeClass(CLASS_NAME_COLLAPSING) - .addClass(CLASS_NAME_COLLAPSE) - .trigger(EVENT_HIDDEN); - }; - - this._element.style[dimension] = ""; - var transitionDuration = Util.getTransitionDurationFromElement( - this._element - ); - $__default["default"](this._element) - .one(Util.TRANSITION_END, complete) - .emulateTransitionEnd(transitionDuration); - }; - - _proto.setTransitioning = function setTransitioning(isTransitioning) { - this._isTransitioning = isTransitioning; - }; - - _proto.dispose = function dispose() { - $__default["default"].removeData(this._element, DATA_KEY$3); - this._config = null; - this._parent = null; - this._element = 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 - - Util.typeCheckConfig(NAME$3, config, DefaultType$1); - return config; - }; - - _proto._getDimension = function _getDimension() { - var hasWidth = $__default["default"](this._element).hasClass( - DIMENSION_WIDTH - ); - return hasWidth ? DIMENSION_WIDTH : DIMENSION_HEIGHT; - }; - - _proto._getParent = function _getParent() { - var _this3 = this; - - var parent; - - if (Util.isElement(this._config.parent)) { - parent = this._config.parent; // It's a jQuery object - - if (typeof this._config.parent.jquery !== "undefined") { - parent = this._config.parent[0]; - } - } else { - parent = document.querySelector(this._config.parent); - } - - var selector = - '[data-toggle="collapse"][data-parent="' + this._config.parent + '"]'; - var children = [].slice.call(parent.querySelectorAll(selector)); - $__default["default"](children).each(function (i, element) { - _this3._addAriaAndCollapsedClass( - Collapse._getTargetFromElement(element), - [element] - ); - }); - return parent; - }; - - _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass( - element, - triggerArray - ) { - var isOpen = $__default["default"](element).hasClass(CLASS_NAME_SHOW$1); - - if (triggerArray.length) { - $__default["default"](triggerArray) - .toggleClass(CLASS_NAME_COLLAPSED, !isOpen) - .attr("aria-expanded", isOpen); - } - }; // Static - - Collapse._getTargetFromElement = function _getTargetFromElement(element) { - var selector = Util.getSelectorFromElement(element); - return selector ? document.querySelector(selector) : null; - }; - - Collapse._jQueryInterface = function _jQueryInterface(config) { - return this.each(function () { - var $element = $__default["default"](this); - var data = $element.data(DATA_KEY$3); - - var _config = _extends( - {}, - Default$1, - $element.data(), - typeof config === "object" && config ? config : {} - ); - - if ( - !data && - _config.toggle && - typeof config === "string" && - /show|hide/.test(config) - ) { - _config.toggle = false; - } - - if (!data) { - data = new Collapse(this, _config); - $element.data(DATA_KEY$3, data); - } - - if (typeof config === "string") { - if (typeof data[config] === "undefined") { - throw new TypeError('No method named "' + config + '"'); - } - - data[config](); - } - }); - }; - - _createClass(Collapse, null, [ - { - key: "VERSION", - get: function get() { - return VERSION$3; - }, - }, - { - key: "Default", - get: function get() { - return Default$1; - }, - }, - ]); - - return Collapse; - })(); - /** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ - - $__default["default"](document).on( - 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.currentTarget.tagName === "A") { - event.preventDefault(); - } - - var $trigger = $__default["default"](this); - var selector = Util.getSelectorFromElement(this); - var selectors = [].slice.call(document.querySelectorAll(selector)); - $__default["default"](selectors).each(function () { - var $target = $__default["default"](this); - var data = $target.data(DATA_KEY$3); - var config = data ? "toggle" : $trigger.data(); - - Collapse._jQueryInterface.call($target, config); - }); - } - ); - /** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - */ - - $__default["default"].fn[NAME$3] = Collapse._jQueryInterface; - $__default["default"].fn[NAME$3].Constructor = Collapse; - - $__default["default"].fn[NAME$3].noConflict = function () { - $__default["default"].fn[NAME$3] = JQUERY_NO_CONFLICT$3; - return Collapse._jQueryInterface; - }; - - /** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - - var NAME$4 = "dropdown"; - var VERSION$4 = "4.6.0"; - var DATA_KEY$4 = "bs.dropdown"; - var EVENT_KEY$4 = "." + DATA_KEY$4; - var DATA_API_KEY$4 = ".data-api"; - var JQUERY_NO_CONFLICT$4 = $__default["default"].fn[NAME$4]; - var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key - - var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key - - var TAB_KEYCODE = 9; // KeyboardEvent.which value for tab key - - var ARROW_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key - - var ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key - - var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse) - - var REGEXP_KEYDOWN = new RegExp( - ARROW_UP_KEYCODE + "|" + ARROW_DOWN_KEYCODE + "|" + ESCAPE_KEYCODE - ); - 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$2 = "show"; - var CLASS_NAME_DROPUP = "dropup"; - var CLASS_NAME_DROPRIGHT = "dropright"; - var CLASS_NAME_DROPLEFT = "dropleft"; - var CLASS_NAME_MENURIGHT = "dropdown-menu-right"; - var CLASS_NAME_POSITION_STATIC = "position-static"; - var SELECTOR_DATA_TOGGLE$2 = '[data-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 = "top-start"; - var PLACEMENT_TOPEND = "top-end"; - var PLACEMENT_BOTTOM = "bottom-start"; - var PLACEMENT_BOTTOMEND = "bottom-end"; - var PLACEMENT_RIGHT = "right-start"; - var PLACEMENT_LEFT = "left-start"; - var Default$2 = { - offset: 0, - flip: true, - boundary: "scrollParent", - 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 () { - function Dropdown(element, config) { - this._element = element; - this._popper = null; - this._config = this._getConfig(config); - this._menu = this._getMenuElement(); - this._inNavbar = this._detectNavbar(); - - this._addEventListeners(); - } // Getters - - var _proto = Dropdown.prototype; - - // Public - _proto.toggle = function toggle() { - if ( - this._element.disabled || - $__default["default"](this._element).hasClass(CLASS_NAME_DISABLED) - ) { - return; - } - - var isActive = $__default["default"](this._menu).hasClass( - CLASS_NAME_SHOW$2 - ); - - Dropdown._clearMenus(); - - if (isActive) { - return; - } - - this.show(true); - }; - - _proto.show = function show(usePopper) { - if (usePopper === void 0) { - usePopper = false; - } - - if ( - this._element.disabled || - $__default["default"](this._element).hasClass(CLASS_NAME_DISABLED) || - $__default["default"](this._menu).hasClass(CLASS_NAME_SHOW$2) - ) { - return; - } - - var relatedTarget = { - relatedTarget: this._element, - }; - var showEvent = $__default["default"].Event(EVENT_SHOW$1, relatedTarget); - - var parent = Dropdown._getParentFromElement(this._element); - - $__default["default"](parent).trigger(showEvent); - - if (showEvent.isDefaultPrevented()) { - return; - } // Totally disable Popper for Dropdowns in Navbar - - if (!this._inNavbar && usePopper) { - /** - * Check for Popper dependency - * Popper - https://popper.js.org - */ - if (typeof Popper__default["default"] === "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 (Util.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]; - } - } // If boundary is not `scrollParent`, then set position to `static` - // to allow the menu to "escape" the scroll parent's boundaries - // https://github.com/twbs/bootstrap/issues/24251 - - if (this._config.boundary !== "scrollParent") { - $__default["default"](parent).addClass(CLASS_NAME_POSITION_STATIC); - } - - this._popper = new Popper__default["default"]( - 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 && - $__default["default"](parent).closest(SELECTOR_NAVBAR_NAV).length === 0 - ) { - $__default["default"](document.body) - .children() - .on("mouseover", null, $__default["default"].noop); - } - - this._element.focus(); - - this._element.setAttribute("aria-expanded", true); - - $__default["default"](this._menu).toggleClass(CLASS_NAME_SHOW$2); - $__default["default"](parent) - .toggleClass(CLASS_NAME_SHOW$2) - .trigger($__default["default"].Event(EVENT_SHOWN$1, relatedTarget)); - }; - - _proto.hide = function hide() { - if ( - this._element.disabled || - $__default["default"](this._element).hasClass(CLASS_NAME_DISABLED) || - !$__default["default"](this._menu).hasClass(CLASS_NAME_SHOW$2) - ) { - return; - } - - var relatedTarget = { - relatedTarget: this._element, - }; - var hideEvent = $__default["default"].Event(EVENT_HIDE$1, relatedTarget); - - var parent = Dropdown._getParentFromElement(this._element); - - $__default["default"](parent).trigger(hideEvent); - - if (hideEvent.isDefaultPrevented()) { - return; - } - - if (this._popper) { - this._popper.destroy(); - } - - $__default["default"](this._menu).toggleClass(CLASS_NAME_SHOW$2); - $__default["default"](parent) - .toggleClass(CLASS_NAME_SHOW$2) - .trigger($__default["default"].Event(EVENT_HIDDEN$1, relatedTarget)); - }; - - _proto.dispose = function dispose() { - $__default["default"].removeData(this._element, DATA_KEY$4); - $__default["default"](this._element).off(EVENT_KEY$4); - this._element = null; - this._menu = null; - - if (this._popper !== null) { - this._popper.destroy(); - - this._popper = null; - } - }; - - _proto.update = function update() { - this._inNavbar = this._detectNavbar(); - - if (this._popper !== null) { - this._popper.scheduleUpdate(); - } - }; // Private - - _proto._addEventListeners = function _addEventListeners() { - var _this = this; - - $__default["default"](this._element).on(EVENT_CLICK, function (event) { - event.preventDefault(); - event.stopPropagation(); - - _this.toggle(); - }); - }; - - _proto._getConfig = function _getConfig(config) { - config = _extends( - {}, - this.constructor.Default, - $__default["default"](this._element).data(), - config - ); - Util.typeCheckConfig(NAME$4, config, this.constructor.DefaultType); - return config; - }; - - _proto._getMenuElement = function _getMenuElement() { - if (!this._menu) { - var parent = Dropdown._getParentFromElement(this._element); - - if (parent) { - this._menu = parent.querySelector(SELECTOR_MENU); - } - } - - return this._menu; - }; - - _proto._getPlacement = function _getPlacement() { - var $parentDropdown = $__default["default"](this._element.parentNode); - var placement = PLACEMENT_BOTTOM; // Handle dropup - - if ($parentDropdown.hasClass(CLASS_NAME_DROPUP)) { - placement = $__default["default"](this._menu).hasClass( - CLASS_NAME_MENURIGHT - ) - ? PLACEMENT_TOPEND - : PLACEMENT_TOP; - } else if ($parentDropdown.hasClass(CLASS_NAME_DROPRIGHT)) { - placement = PLACEMENT_RIGHT; - } else if ($parentDropdown.hasClass(CLASS_NAME_DROPLEFT)) { - placement = PLACEMENT_LEFT; - } else if ( - $__default["default"](this._menu).hasClass(CLASS_NAME_MENURIGHT) - ) { - placement = PLACEMENT_BOTTOMEND; - } - - return placement; - }; - - _proto._detectNavbar = function _detectNavbar() { - return $__default["default"](this._element).closest(".navbar").length > 0; - }; - - _proto._getOffset = function _getOffset() { - var _this2 = this; - - var offset = {}; - - if (typeof this._config.offset === "function") { - offset.fn = function (data) { - data.offsets = _extends( - {}, - data.offsets, - _this2._config.offset(data.offsets, _this2._element) || {} - ); - return data; - }; - } else { - offset.offset = this._config.offset; - } - - return offset; - }; - - _proto._getPopperConfig = function _getPopperConfig() { - var popperConfig = { - placement: this._getPlacement(), - modifiers: { - offset: this._getOffset(), - flip: { - enabled: this._config.flip, - }, - preventOverflow: { - boundariesElement: this._config.boundary, - }, - }, - }; // Disable Popper if we have a static display - - if (this._config.display === "static") { - popperConfig.modifiers.applyStyle = { - enabled: false, - }; - } - - return _extends({}, popperConfig, this._config.popperConfig); - }; // Static - - Dropdown._jQueryInterface = function _jQueryInterface(config) { - return this.each(function () { - var data = $__default["default"](this).data(DATA_KEY$4); - - var _config = typeof config === "object" ? config : null; - - if (!data) { - data = new Dropdown(this, _config); - $__default["default"](this).data(DATA_KEY$4, data); - } - - if (typeof config === "string") { - if (typeof data[config] === "undefined") { - throw new TypeError('No method named "' + config + '"'); - } - - data[config](); - } - }); - }; - - Dropdown._clearMenus = function _clearMenus(event) { - if ( - event && - (event.which === RIGHT_MOUSE_BUTTON_WHICH || - (event.type === "keyup" && event.which !== TAB_KEYCODE)) - ) { - return; - } - - var toggles = [].slice.call( - document.querySelectorAll(SELECTOR_DATA_TOGGLE$2) - ); - - for (var i = 0, len = toggles.length; i < len; i++) { - var parent = Dropdown._getParentFromElement(toggles[i]); - - var context = $__default["default"](toggles[i]).data(DATA_KEY$4); - var relatedTarget = { - relatedTarget: toggles[i], - }; - - if (event && event.type === "click") { - relatedTarget.clickEvent = event; - } - - if (!context) { - continue; - } - - var dropdownMenu = context._menu; - - if (!$__default["default"](parent).hasClass(CLASS_NAME_SHOW$2)) { - continue; - } - - if ( - event && - ((event.type === "click" && - /input|textarea/i.test(event.target.tagName)) || - (event.type === "keyup" && event.which === TAB_KEYCODE)) && - $__default["default"].contains(parent, event.target) - ) { - continue; - } - - var hideEvent = $__default["default"].Event( - EVENT_HIDE$1, - relatedTarget - ); - $__default["default"](parent).trigger(hideEvent); - - if (hideEvent.isDefaultPrevented()) { - 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) { - $__default["default"](document.body) - .children() - .off("mouseover", null, $__default["default"].noop); - } - - toggles[i].setAttribute("aria-expanded", "false"); - - if (context._popper) { - context._popper.destroy(); - } - - $__default["default"](dropdownMenu).removeClass(CLASS_NAME_SHOW$2); - $__default["default"](parent) - .removeClass(CLASS_NAME_SHOW$2) - .trigger($__default["default"].Event(EVENT_HIDDEN$1, relatedTarget)); - } - }; - - Dropdown._getParentFromElement = function _getParentFromElement(element) { - var parent; - var selector = Util.getSelectorFromElement(element); - - if (selector) { - parent = document.querySelector(selector); - } - - return parent || element.parentNode; - }; // eslint-disable-next-line complexity - - 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.which === SPACE_KEYCODE || - (event.which !== ESCAPE_KEYCODE && - ((event.which !== ARROW_DOWN_KEYCODE && - event.which !== ARROW_UP_KEYCODE) || - $__default["default"](event.target).closest(SELECTOR_MENU) - .length)) - : !REGEXP_KEYDOWN.test(event.which) - ) { - return; - } - - if ( - this.disabled || - $__default["default"](this).hasClass(CLASS_NAME_DISABLED) - ) { - return; - } - - var parent = Dropdown._getParentFromElement(this); - - var isActive = $__default["default"](parent).hasClass(CLASS_NAME_SHOW$2); - - if (!isActive && event.which === ESCAPE_KEYCODE) { - return; - } - - event.preventDefault(); - event.stopPropagation(); - - if ( - !isActive || - event.which === ESCAPE_KEYCODE || - event.which === SPACE_KEYCODE - ) { - if (event.which === ESCAPE_KEYCODE) { - $__default["default"]( - parent.querySelector(SELECTOR_DATA_TOGGLE$2) - ).trigger("focus"); - } - - $__default["default"](this).trigger("click"); - return; - } - - var items = [].slice - .call(parent.querySelectorAll(SELECTOR_VISIBLE_ITEMS)) - .filter(function (item) { - return $__default["default"](item).is(":visible"); - }); - - if (items.length === 0) { - return; - } - - var index = items.indexOf(event.target); - - if (event.which === ARROW_UP_KEYCODE && index > 0) { - // Up - index--; - } - - if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) { - // Down - index++; - } - - if (index < 0) { - index = 0; - } - - items[index].focus(); - }; - - _createClass(Dropdown, null, [ - { - key: "VERSION", - get: function get() { - return VERSION$4; - }, - }, - { - key: "Default", - get: function get() { - return Default$2; - }, - }, - { - key: "DefaultType", - get: function get() { - return DefaultType$2; - }, - }, - ]); - - return Dropdown; - })(); - /** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ - - $__default["default"](document) - .on( - EVENT_KEYDOWN_DATA_API, - SELECTOR_DATA_TOGGLE$2, - Dropdown._dataApiKeydownHandler - ) - .on(EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown._dataApiKeydownHandler) - .on( - EVENT_CLICK_DATA_API$4 + " " + EVENT_KEYUP_DATA_API, - Dropdown._clearMenus - ) - .on(EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$2, function (event) { - event.preventDefault(); - event.stopPropagation(); - - Dropdown._jQueryInterface.call($__default["default"](this), "toggle"); - }) - .on(EVENT_CLICK_DATA_API$4, SELECTOR_FORM_CHILD, function (e) { - e.stopPropagation(); - }); - /** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - */ - - $__default["default"].fn[NAME$4] = Dropdown._jQueryInterface; - $__default["default"].fn[NAME$4].Constructor = Dropdown; - - $__default["default"].fn[NAME$4].noConflict = function () { - $__default["default"].fn[NAME$4] = JQUERY_NO_CONFLICT$4; - return Dropdown._jQueryInterface; - }; - - /** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - - var NAME$5 = "modal"; - var VERSION$5 = "4.6.0"; - var DATA_KEY$5 = "bs.modal"; - var EVENT_KEY$5 = "." + DATA_KEY$5; - var DATA_API_KEY$5 = ".data-api"; - var JQUERY_NO_CONFLICT$5 = $__default["default"].fn[NAME$5]; - var ESCAPE_KEYCODE$1 = 27; // KeyboardEvent.which value for Escape (Esc) key - - var Default$3 = { - backdrop: true, - keyboard: true, - focus: true, - show: true, - }; - var DefaultType$3 = { - backdrop: "(boolean|string)", - keyboard: "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_SCROLLABLE = "modal-dialog-scrollable"; - var CLASS_NAME_SCROLLBAR_MEASURER = "modal-scrollbar-measure"; - var CLASS_NAME_BACKDROP = "modal-backdrop"; - var CLASS_NAME_OPEN = "modal-open"; - var CLASS_NAME_FADE$1 = "fade"; - var CLASS_NAME_SHOW$3 = "show"; - var CLASS_NAME_STATIC = "modal-static"; - var SELECTOR_DIALOG = ".modal-dialog"; - var SELECTOR_MODAL_BODY = ".modal-body"; - var SELECTOR_DATA_TOGGLE$3 = '[data-toggle="modal"]'; - var SELECTOR_DATA_DISMISS = '[data-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 () { - function Modal(element, config) { - this._config = this._getConfig(config); - this._element = element; - this._dialog = element.querySelector(SELECTOR_DIALOG); - this._backdrop = null; - this._isShown = false; - this._isBodyOverflowing = false; - this._ignoreBackdropClick = false; - this._isTransitioning = false; - this._scrollbarWidth = 0; - } // 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 _this = this; - - if (this._isShown || this._isTransitioning) { - return; - } - - if ($__default["default"](this._element).hasClass(CLASS_NAME_FADE$1)) { - this._isTransitioning = true; - } - - var showEvent = $__default["default"].Event(EVENT_SHOW$2, { - relatedTarget: relatedTarget, - }); - $__default["default"](this._element).trigger(showEvent); - - if (this._isShown || showEvent.isDefaultPrevented()) { - return; - } - - this._isShown = true; - - this._checkScrollbar(); - - this._setScrollbar(); - - this._adjustDialog(); - - this._setEscapeEvent(); - - this._setResizeEvent(); - - $__default["default"](this._element).on( - EVENT_CLICK_DISMISS, - SELECTOR_DATA_DISMISS, - function (event) { - return _this.hide(event); - } - ); - $__default["default"](this._dialog).on( - EVENT_MOUSEDOWN_DISMISS, - function () { - $__default["default"](_this._element).one( - EVENT_MOUSEUP_DISMISS, - function (event) { - if ($__default["default"](event.target).is(_this._element)) { - _this._ignoreBackdropClick = true; - } - } - ); - } - ); - - this._showBackdrop(function () { - return _this._showElement(relatedTarget); - }); - }; - - _proto.hide = function hide(event) { - var _this2 = this; - - if (event) { - event.preventDefault(); - } - - if (!this._isShown || this._isTransitioning) { - return; - } - - var hideEvent = $__default["default"].Event(EVENT_HIDE$2); - $__default["default"](this._element).trigger(hideEvent); - - if (!this._isShown || hideEvent.isDefaultPrevented()) { - return; - } - - this._isShown = false; - var transition = $__default["default"](this._element).hasClass( - CLASS_NAME_FADE$1 - ); - - if (transition) { - this._isTransitioning = true; - } - - this._setEscapeEvent(); - - this._setResizeEvent(); - - $__default["default"](document).off(EVENT_FOCUSIN); - $__default["default"](this._element).removeClass(CLASS_NAME_SHOW$3); - $__default["default"](this._element).off(EVENT_CLICK_DISMISS); - $__default["default"](this._dialog).off(EVENT_MOUSEDOWN_DISMISS); - - if (transition) { - var transitionDuration = Util.getTransitionDurationFromElement( - this._element - ); - $__default["default"](this._element) - .one(Util.TRANSITION_END, function (event) { - return _this2._hideModal(event); - }) - .emulateTransitionEnd(transitionDuration); - } else { - this._hideModal(); - } - }; - - _proto.dispose = function dispose() { - [window, this._element, this._dialog].forEach(function (htmlElement) { - return $__default["default"](htmlElement).off(EVENT_KEY$5); - }); - /** - * `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 - */ - - $__default["default"](document).off(EVENT_FOCUSIN); - $__default["default"].removeData(this._element, DATA_KEY$5); - this._config = null; - this._element = 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); - Util.typeCheckConfig(NAME$5, config, DefaultType$3); - return config; - }; - - _proto._triggerBackdropTransition = function _triggerBackdropTransition() { - var _this3 = this; - - var hideEventPrevented = - $__default["default"].Event(EVENT_HIDE_PREVENTED); - $__default["default"](this._element).trigger(hideEventPrevented); - - if (hideEventPrevented.isDefaultPrevented()) { - 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 = Util.getTransitionDurationFromElement( - this._dialog - ); - $__default["default"](this._element).off(Util.TRANSITION_END); - $__default["default"](this._element) - .one(Util.TRANSITION_END, function () { - _this3._element.classList.remove(CLASS_NAME_STATIC); - - if (!isModalOverflowing) { - $__default["default"](_this3._element) - .one(Util.TRANSITION_END, function () { - _this3._element.style.overflowY = ""; - }) - .emulateTransitionEnd(_this3._element, modalTransitionDuration); - } - }) - .emulateTransitionEnd(modalTransitionDuration); - - this._element.focus(); - }; - - _proto._showElement = function _showElement(relatedTarget) { - var _this4 = this; - - var transition = $__default["default"](this._element).hasClass( - CLASS_NAME_FADE$1 - ); - var modalBody = this._dialog - ? this._dialog.querySelector(SELECTOR_MODAL_BODY) - : null; - - 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"); - - if ( - $__default["default"](this._dialog).hasClass(CLASS_NAME_SCROLLABLE) && - modalBody - ) { - modalBody.scrollTop = 0; - } else { - this._element.scrollTop = 0; - } - - if (transition) { - Util.reflow(this._element); - } - - $__default["default"](this._element).addClass(CLASS_NAME_SHOW$3); - - if (this._config.focus) { - this._enforceFocus(); - } - - var shownEvent = $__default["default"].Event(EVENT_SHOWN$2, { - relatedTarget: relatedTarget, - }); - - var transitionComplete = function transitionComplete() { - if (_this4._config.focus) { - _this4._element.focus(); - } - - _this4._isTransitioning = false; - $__default["default"](_this4._element).trigger(shownEvent); - }; - - if (transition) { - var transitionDuration = Util.getTransitionDurationFromElement( - this._dialog - ); - $__default["default"](this._dialog) - .one(Util.TRANSITION_END, transitionComplete) - .emulateTransitionEnd(transitionDuration); - } else { - transitionComplete(); - } - }; - - _proto._enforceFocus = function _enforceFocus() { - var _this5 = this; - - $__default["default"](document) - .off(EVENT_FOCUSIN) // Guard against infinite focus loop - .on(EVENT_FOCUSIN, function (event) { - if ( - document !== event.target && - _this5._element !== event.target && - $__default["default"](_this5._element).has(event.target).length === - 0 - ) { - _this5._element.focus(); - } - }); - }; - - _proto._setEscapeEvent = function _setEscapeEvent() { - var _this6 = this; - - if (this._isShown) { - $__default["default"](this._element).on( - EVENT_KEYDOWN_DISMISS, - function (event) { - if (_this6._config.keyboard && event.which === ESCAPE_KEYCODE$1) { - event.preventDefault(); - - _this6.hide(); - } else if ( - !_this6._config.keyboard && - event.which === ESCAPE_KEYCODE$1 - ) { - _this6._triggerBackdropTransition(); - } - } - ); - } else if (!this._isShown) { - $__default["default"](this._element).off(EVENT_KEYDOWN_DISMISS); - } - }; - - _proto._setResizeEvent = function _setResizeEvent() { - var _this7 = this; - - if (this._isShown) { - $__default["default"](window).on(EVENT_RESIZE, function (event) { - return _this7.handleUpdate(event); - }); - } else { - $__default["default"](window).off(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 () { - $__default["default"](document.body).removeClass(CLASS_NAME_OPEN); - - _this8._resetAdjustments(); - - _this8._resetScrollbar(); - - $__default["default"](_this8._element).trigger(EVENT_HIDDEN$2); - }); - }; - - _proto._removeBackdrop = function _removeBackdrop() { - if (this._backdrop) { - $__default["default"](this._backdrop).remove(); - this._backdrop = null; - } - }; - - _proto._showBackdrop = function _showBackdrop(callback) { - var _this9 = this; - - var animate = $__default["default"](this._element).hasClass( - CLASS_NAME_FADE$1 - ) - ? CLASS_NAME_FADE$1 - : ""; - - if (this._isShown && this._config.backdrop) { - this._backdrop = document.createElement("div"); - this._backdrop.className = CLASS_NAME_BACKDROP; - - if (animate) { - this._backdrop.classList.add(animate); - } - - $__default["default"](this._backdrop).appendTo(document.body); - $__default["default"](this._element).on( - 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) { - Util.reflow(this._backdrop); - } - - $__default["default"](this._backdrop).addClass(CLASS_NAME_SHOW$3); - - if (!callback) { - return; - } - - if (!animate) { - callback(); - return; - } - - var backdropTransitionDuration = Util.getTransitionDurationFromElement( - this._backdrop - ); - $__default["default"](this._backdrop) - .one(Util.TRANSITION_END, callback) - .emulateTransitionEnd(backdropTransitionDuration); - } else if (!this._isShown && this._backdrop) { - $__default["default"](this._backdrop).removeClass(CLASS_NAME_SHOW$3); - - var callbackRemove = function callbackRemove() { - _this9._removeBackdrop(); - - if (callback) { - callback(); - } - }; - - if ($__default["default"](this._element).hasClass(CLASS_NAME_FADE$1)) { - var _backdropTransitionDuration = - Util.getTransitionDurationFromElement(this._backdrop); - - $__default["default"](this._backdrop) - .one(Util.TRANSITION_END, callbackRemove) - .emulateTransitionEnd(_backdropTransitionDuration); - } 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 - // ---------------------------------------------------------------------- - - _proto._adjustDialog = 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"; - } - }; - - _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 _this10 = 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 - var fixedContent = [].slice.call( - document.querySelectorAll(SELECTOR_FIXED_CONTENT) - ); - var stickyContent = [].slice.call( - document.querySelectorAll(SELECTOR_STICKY_CONTENT) - ); // Adjust fixed content padding - - $__default["default"](fixedContent).each(function (index, element) { - var actualPadding = element.style.paddingRight; - var calculatedPadding = - $__default["default"](element).css("padding-right"); - $__default["default"](element) - .data("padding-right", actualPadding) - .css( - "padding-right", - parseFloat(calculatedPadding) + _this10._scrollbarWidth + "px" - ); - }); // Adjust sticky content margin - - $__default["default"](stickyContent).each(function (index, element) { - var actualMargin = element.style.marginRight; - var calculatedMargin = - $__default["default"](element).css("margin-right"); - $__default["default"](element) - .data("margin-right", actualMargin) - .css( - "margin-right", - parseFloat(calculatedMargin) - _this10._scrollbarWidth + "px" - ); - }); // Adjust body padding - - var actualPadding = document.body.style.paddingRight; - var calculatedPadding = $__default["default"](document.body).css( - "padding-right" - ); - $__default["default"](document.body) - .data("padding-right", actualPadding) - .css( - "padding-right", - parseFloat(calculatedPadding) + this._scrollbarWidth + "px" - ); - } - - $__default["default"](document.body).addClass(CLASS_NAME_OPEN); - }; - - _proto._resetScrollbar = function _resetScrollbar() { - // Restore fixed content padding - var fixedContent = [].slice.call( - document.querySelectorAll(SELECTOR_FIXED_CONTENT) - ); - $__default["default"](fixedContent).each(function (index, element) { - var padding = $__default["default"](element).data("padding-right"); - $__default["default"](element).removeData("padding-right"); - element.style.paddingRight = padding ? padding : ""; - }); // Restore sticky content - - var elements = [].slice.call( - document.querySelectorAll("" + SELECTOR_STICKY_CONTENT) - ); - $__default["default"](elements).each(function (index, element) { - var margin = $__default["default"](element).data("margin-right"); - - if (typeof margin !== "undefined") { - $__default["default"](element) - .css("margin-right", margin) - .removeData("margin-right"); - } - }); // Restore body padding - - var padding = $__default["default"](document.body).data("padding-right"); - $__default["default"](document.body).removeData("padding-right"); - document.body.style.paddingRight = padding ? 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 = $__default["default"](this).data(DATA_KEY$5); - - var _config = _extends( - {}, - Default$3, - $__default["default"](this).data(), - typeof config === "object" && config ? config : {} - ); - - if (!data) { - data = new Modal(this, _config); - $__default["default"](this).data(DATA_KEY$5, data); - } - - if (typeof config === "string") { - if (typeof data[config] === "undefined") { - throw new TypeError('No method named "' + config + '"'); - } - - data[config](relatedTarget); - } else if (_config.show) { - data.show(relatedTarget); - } - }); - }; - - _createClass(Modal, null, [ - { - key: "VERSION", - get: function get() { - return VERSION$5; - }, - }, - { - key: "Default", - get: function get() { - return Default$3; - }, - }, - ]); - - return Modal; - })(); - /** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ - - $__default["default"](document).on( - EVENT_CLICK_DATA_API$5, - SELECTOR_DATA_TOGGLE$3, - function (event) { - var _this11 = this; - - var target; - var selector = Util.getSelectorFromElement(this); - - if (selector) { - target = document.querySelector(selector); - } - - var config = $__default["default"](target).data(DATA_KEY$5) - ? "toggle" - : _extends( - {}, - $__default["default"](target).data(), - $__default["default"](this).data() - ); - - if (this.tagName === "A" || this.tagName === "AREA") { - event.preventDefault(); - } - - var $target = $__default["default"](target).one( - EVENT_SHOW$2, - function (showEvent) { - if (showEvent.isDefaultPrevented()) { - // Only register focus restorer if modal will actually get shown - return; - } - - $target.one(EVENT_HIDDEN$2, function () { - if ($__default["default"](_this11).is(":visible")) { - _this11.focus(); - } - }); - } - ); - - Modal._jQueryInterface.call($__default["default"](target), config, this); - } - ); - /** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - */ - - $__default["default"].fn[NAME$5] = Modal._jQueryInterface; - $__default["default"].fn[NAME$5].Constructor = Modal; - - $__default["default"].fn[NAME$5].noConflict = function () { - $__default["default"].fn[NAME$5] = JQUERY_NO_CONFLICT$5; - return Modal._jQueryInterface; - }; - - /** - * -------------------------------------------------------------------------- - * Bootstrap (v4.6.0): tools/sanitizer.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ - var uriAttrs = [ - "background", - "cite", - "href", - "itemtype", - "longdesc", - "poster", - "src", - "xlink:href", - ]; - var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i; - var DefaultWhitelist = { - // 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: [], - }; - /** - * 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; - - function allowedAttribute(attr, allowedAttributeList) { - var attrName = attr.nodeName.toLowerCase(); - - if (allowedAttributeList.indexOf(attrName) !== -1) { - if (uriAttrs.indexOf(attrName) !== -1) { - 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; - } - - function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) { - if (unsafeHtml.length === 0) { - return unsafeHtml; - } - - if (sanitizeFn && typeof sanitizeFn === "function") { - return sanitizeFn(unsafeHtml); - } - - var domParser = new window.DOMParser(); - var createdDocument = domParser.parseFromString(unsafeHtml, "text/html"); - var whitelistKeys = Object.keys(whiteList); - var elements = [].slice.call(createdDocument.body.querySelectorAll("*")); - - var _loop = function _loop(i, len) { - var el = elements[i]; - var elName = el.nodeName.toLowerCase(); - - if (whitelistKeys.indexOf(el.nodeName.toLowerCase()) === -1) { - el.parentNode.removeChild(el); - return "continue"; - } - - var attributeList = [].slice.call(el.attributes); - var whitelistedAttributes = [].concat( - whiteList["*"] || [], - whiteList[elName] || [] - ); - attributeList.forEach(function (attr) { - if (!allowedAttribute(attr, whitelistedAttributes)) { - 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 VERSION$6 = "4.6.0"; - var DATA_KEY$6 = "bs.tooltip"; - var EVENT_KEY$6 = "." + DATA_KEY$6; - var JQUERY_NO_CONFLICT$6 = $__default["default"].fn[NAME$6]; - var CLASS_PREFIX = "bs-tooltip"; - var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", "g"); - var DISALLOWED_ATTRIBUTES = ["sanitize", "whiteList", "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)", - offset: "(number|string|function)", - container: "(string|element|boolean)", - fallbackPlacement: "(string|array)", - boundary: "(string|element)", - customClass: "(string|function)", - sanitize: "boolean", - sanitizeFn: "(null|function)", - whiteList: "object", - popperConfig: "(null|object)", - }; - var AttachmentMap = { - AUTO: "auto", - TOP: "top", - RIGHT: "right", - BOTTOM: "bottom", - LEFT: "left", - }; - var Default$4 = { - animation: true, - template: - '', - trigger: "hover focus", - title: "", - delay: 0, - html: false, - selector: false, - placement: "top", - offset: 0, - container: false, - fallbackPlacement: "flip", - boundary: "scrollParent", - customClass: "", - sanitize: true, - sanitizeFn: null, - whiteList: DefaultWhitelist, - popperConfig: null, - }; - var HOVER_STATE_SHOW = "show"; - var HOVER_STATE_OUT = "out"; - var Event = { - 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$2 = "fade"; - var CLASS_NAME_SHOW$4 = "show"; - var SELECTOR_TOOLTIP_INNER = ".tooltip-inner"; - var SELECTOR_ARROW = ".arrow"; - var TRIGGER_HOVER = "hover"; - var TRIGGER_FOCUS = "focus"; - var TRIGGER_CLICK = "click"; - var TRIGGER_MANUAL = "manual"; - /** - * ------------------------------------------------------------------------ - * Class Definition - * ------------------------------------------------------------------------ - */ - - var Tooltip = /*#__PURE__*/ (function () { - function Tooltip(element, config) { - if (typeof Popper__default["default"] === "undefined") { - throw new TypeError( - "Bootstrap's tooltips require Popper (https://popper.js.org)" - ); - } // private - - this._isEnabled = true; - this._timeout = 0; - this._hoverState = ""; - this._activeTrigger = {}; - this._popper = null; // Protected - - this.element = element; - this.config = this._getConfig(config); - this.tip = null; - - this._setListeners(); - } // 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 = $__default["default"](event.currentTarget).data(dataKey); - - if (!context) { - context = new this.constructor( - event.currentTarget, - this._getDelegateConfig() - ); - $__default["default"](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 ( - $__default["default"](this.getTipElement()).hasClass( - CLASS_NAME_SHOW$4 - ) - ) { - this._leave(null, this); - - return; - } - - this._enter(null, this); - } - }; - - _proto.dispose = function dispose() { - clearTimeout(this._timeout); - $__default["default"].removeData(this.element, this.constructor.DATA_KEY); - $__default["default"](this.element).off(this.constructor.EVENT_KEY); - $__default["default"](this.element) - .closest(".modal") - .off("hide.bs.modal", this._hideModalHandler); - - if (this.tip) { - $__default["default"](this.tip).remove(); - } - - this._isEnabled = null; - this._timeout = null; - this._hoverState = null; - this._activeTrigger = null; - - if (this._popper) { - this._popper.destroy(); - } - - this._popper = null; - this.element = null; - this.config = null; - this.tip = null; - }; - - _proto.show = function show() { - var _this = this; - - if ($__default["default"](this.element).css("display") === "none") { - throw new Error("Please use show on visible elements"); - } - - var showEvent = $__default["default"].Event(this.constructor.Event.SHOW); - - if (this.isWithContent() && this._isEnabled) { - $__default["default"](this.element).trigger(showEvent); - var shadowRoot = Util.findShadowRoot(this.element); - var isInTheDom = $__default["default"].contains( - shadowRoot !== null - ? shadowRoot - : 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) { - $__default["default"](tip).addClass(CLASS_NAME_FADE$2); - } - - 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(); - - $__default["default"](tip).data(this.constructor.DATA_KEY, this); - - if ( - !$__default["default"].contains( - this.element.ownerDocument.documentElement, - this.tip - ) - ) { - $__default["default"](tip).appendTo(container); - } - - $__default["default"](this.element).trigger( - this.constructor.Event.INSERTED - ); - this._popper = new Popper__default["default"]( - this.element, - tip, - this._getPopperConfig(attachment) - ); - $__default["default"](tip).addClass(CLASS_NAME_SHOW$4); - $__default["default"](tip).addClass(this.config.customClass); // 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) { - $__default["default"](document.body) - .children() - .on("mouseover", null, $__default["default"].noop); - } - - var complete = function complete() { - if (_this.config.animation) { - _this._fixTransition(); - } - - var prevHoverState = _this._hoverState; - _this._hoverState = null; - $__default["default"](_this.element).trigger( - _this.constructor.Event.SHOWN - ); - - if (prevHoverState === HOVER_STATE_OUT) { - _this._leave(null, _this); - } - }; - - if ($__default["default"](this.tip).hasClass(CLASS_NAME_FADE$2)) { - var transitionDuration = Util.getTransitionDurationFromElement( - this.tip - ); - $__default["default"](this.tip) - .one(Util.TRANSITION_END, complete) - .emulateTransitionEnd(transitionDuration); - } else { - complete(); - } - } - }; - - _proto.hide = function hide(callback) { - var _this2 = this; - - var tip = this.getTipElement(); - var hideEvent = $__default["default"].Event(this.constructor.Event.HIDE); - - var complete = function complete() { - if (_this2._hoverState !== HOVER_STATE_SHOW && tip.parentNode) { - tip.parentNode.removeChild(tip); - } - - _this2._cleanTipClass(); - - _this2.element.removeAttribute("aria-describedby"); - - $__default["default"](_this2.element).trigger( - _this2.constructor.Event.HIDDEN - ); - - if (_this2._popper !== null) { - _this2._popper.destroy(); - } - - if (callback) { - callback(); - } - }; - - $__default["default"](this.element).trigger(hideEvent); - - if (hideEvent.isDefaultPrevented()) { - return; - } - - $__default["default"](tip).removeClass(CLASS_NAME_SHOW$4); // If this is a touch-enabled device we remove the extra - // empty mouseover listeners we added for iOS support - - if ("ontouchstart" in document.documentElement) { - $__default["default"](document.body) - .children() - .off("mouseover", null, $__default["default"].noop); - } - - this._activeTrigger[TRIGGER_CLICK] = false; - this._activeTrigger[TRIGGER_FOCUS] = false; - this._activeTrigger[TRIGGER_HOVER] = false; - - if ($__default["default"](this.tip).hasClass(CLASS_NAME_FADE$2)) { - var transitionDuration = Util.getTransitionDurationFromElement(tip); - $__default["default"](tip) - .one(Util.TRANSITION_END, complete) - .emulateTransitionEnd(transitionDuration); - } else { - complete(); - } - - this._hoverState = ""; - }; - - _proto.update = function update() { - if (this._popper !== null) { - this._popper.scheduleUpdate(); - } - }; // Protected - - _proto.isWithContent = function isWithContent() { - return Boolean(this.getTitle()); - }; - - _proto.addAttachmentClass = function addAttachmentClass(attachment) { - $__default["default"](this.getTipElement()).addClass( - CLASS_PREFIX + "-" + attachment - ); - }; - - _proto.getTipElement = function getTipElement() { - this.tip = this.tip || $__default["default"](this.config.template)[0]; - return this.tip; - }; - - _proto.setContent = function setContent() { - var tip = this.getTipElement(); - this.setElementContent( - $__default["default"](tip.querySelectorAll(SELECTOR_TOOLTIP_INNER)), - this.getTitle() - ); - $__default["default"](tip).removeClass( - CLASS_NAME_FADE$2 + " " + CLASS_NAME_SHOW$4 - ); - }; - - _proto.setElementContent = function setElementContent($element, content) { - if (typeof content === "object" && (content.nodeType || content.jquery)) { - // Content is a DOM node or a jQuery - if (this.config.html) { - if (!$__default["default"](content).parent().is($element)) { - $element.empty().append(content); - } - } else { - $element.text($__default["default"](content).text()); - } - - return; - } - - if (this.config.html) { - if (this.config.sanitize) { - content = sanitizeHtml( - content, - this.config.whiteList, - this.config.sanitizeFn - ); - } - - $element.html(content); - } else { - $element.text(content); - } - }; - - _proto.getTitle = 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; - }; // Private - - _proto._getPopperConfig = function _getPopperConfig(attachment) { - var _this3 = this; - - var defaultBsConfig = { - placement: attachment, - modifiers: { - offset: this._getOffset(), - flip: { - behavior: this.config.fallbackPlacement, - }, - arrow: { - element: SELECTOR_ARROW, - }, - preventOverflow: { - boundariesElement: this.config.boundary, - }, - }, - onCreate: function onCreate(data) { - if (data.originalPlacement !== data.placement) { - _this3._handlePopperPlacementChange(data); - } - }, - onUpdate: function onUpdate(data) { - return _this3._handlePopperPlacementChange(data); - }, - }; - return _extends({}, defaultBsConfig, this.config.popperConfig); - }; - - _proto._getOffset = function _getOffset() { - var _this4 = this; - - var offset = {}; - - if (typeof this.config.offset === "function") { - offset.fn = function (data) { - data.offsets = _extends( - {}, - data.offsets, - _this4.config.offset(data.offsets, _this4.element) || {} - ); - return data; - }; - } else { - offset.offset = this.config.offset; - } - - return offset; - }; - - _proto._getContainer = function _getContainer() { - if (this.config.container === false) { - return document.body; - } - - if (Util.isElement(this.config.container)) { - return $__default["default"](this.config.container); - } - - return $__default["default"](document).find(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") { - $__default["default"](_this5.element).on( - _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; - $__default["default"](_this5.element) - .on(eventIn, _this5.config.selector, function (event) { - return _this5._enter(event); - }) - .on(eventOut, _this5.config.selector, function (event) { - return _this5._leave(event); - }); - } - }); - - this._hideModalHandler = function () { - if (_this5.element) { - _this5.hide(); - } - }; - - $__default["default"](this.element) - .closest(".modal") - .on("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 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", ""); - } - }; - - _proto._enter = function _enter(event, context) { - var dataKey = this.constructor.DATA_KEY; - context = - context || $__default["default"](event.currentTarget).data(dataKey); - - if (!context) { - context = new this.constructor( - event.currentTarget, - this._getDelegateConfig() - ); - $__default["default"](event.currentTarget).data(dataKey, context); - } - - if (event) { - context._activeTrigger[ - event.type === "focusin" ? TRIGGER_FOCUS : TRIGGER_HOVER - ] = true; - } - - if ( - $__default["default"](context.getTipElement()).hasClass( - CLASS_NAME_SHOW$4 - ) || - 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 || $__default["default"](event.currentTarget).data(dataKey); - - if (!context) { - context = new this.constructor( - event.currentTarget, - this._getDelegateConfig() - ); - $__default["default"](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 = 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 = $__default["default"](this.element).data(); - Object.keys(dataAttributes).forEach(function (dataAttr) { - if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) { - delete dataAttributes[dataAttr]; - } - }); - 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(); - } - - Util.typeCheckConfig(NAME$6, config, this.constructor.DefaultType); - - if (config.sanitize) { - config.template = sanitizeHtml( - config.template, - config.whiteList, - 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 = $__default["default"](this.getTipElement()); - var tabClass = $tip.attr("class").match(BSCLS_PREFIX_REGEX); - - if (tabClass !== null && tabClass.length) { - $tip.removeClass(tabClass.join("")); - } - }; - - _proto._handlePopperPlacementChange = function _handlePopperPlacementChange( - popperData - ) { - this.tip = popperData.instance.popper; - - this._cleanTipClass(); - - this.addAttachmentClass(this._getAttachment(popperData.placement)); - }; - - _proto._fixTransition = function _fixTransition() { - var tip = this.getTipElement(); - var initConfigAnimation = this.config.animation; - - if (tip.getAttribute("x-placement") !== null) { - return; - } - - $__default["default"](tip).removeClass(CLASS_NAME_FADE$2); - this.config.animation = false; - this.hide(); - this.show(); - this.config.animation = initConfigAnimation; - }; // Static - - Tooltip._jQueryInterface = function _jQueryInterface(config) { - return this.each(function () { - var $element = $__default["default"](this); - var data = $element.data(DATA_KEY$6); - - var _config = typeof config === "object" && config; - - if (!data && /dispose|hide/.test(config)) { - return; - } - - if (!data) { - data = new Tooltip(this, _config); - $element.data(DATA_KEY$6, data); - } - - if (typeof config === "string") { - if (typeof data[config] === "undefined") { - throw new TypeError('No method named "' + config + '"'); - } - - data[config](); - } - }); - }; - - _createClass(Tooltip, null, [ - { - key: "VERSION", - get: function get() { - return VERSION$6; - }, - }, - { - 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; - }, - }, - { - key: "EVENT_KEY", - get: function get() { - return EVENT_KEY$6; - }, - }, - { - key: "DefaultType", - get: function get() { - return DefaultType$4; - }, - }, - ]); - - return Tooltip; - })(); - /** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - */ - - $__default["default"].fn[NAME$6] = Tooltip._jQueryInterface; - $__default["default"].fn[NAME$6].Constructor = Tooltip; - - $__default["default"].fn[NAME$6].noConflict = function () { - $__default["default"].fn[NAME$6] = JQUERY_NO_CONFLICT$6; - return Tooltip._jQueryInterface; - }; - - /** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - - var NAME$7 = "popover"; - var VERSION$7 = "4.6.0"; - var DATA_KEY$7 = "bs.popover"; - var EVENT_KEY$7 = "." + DATA_KEY$7; - var JQUERY_NO_CONFLICT$7 = $__default["default"].fn[NAME$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 CLASS_NAME_FADE$3 = "fade"; - var CLASS_NAME_SHOW$5 = "show"; - var SELECTOR_TITLE = ".popover-header"; - var SELECTOR_CONTENT = ".popover-body"; - var Event$1 = { - 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 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.addAttachmentClass = function addAttachmentClass(attachment) { - $__default["default"](this.getTipElement()).addClass( - CLASS_PREFIX$1 + "-" + attachment - ); - }; - - _proto.getTipElement = function getTipElement() { - this.tip = this.tip || $__default["default"](this.config.template)[0]; - return this.tip; - }; - - _proto.setContent = function setContent() { - var $tip = $__default["default"](this.getTipElement()); // We use append for html objects to maintain js events - - this.setElementContent($tip.find(SELECTOR_TITLE), this.getTitle()); - - var content = this._getContent(); - - if (typeof content === "function") { - content = content.call(this.element); - } - - this.setElementContent($tip.find(SELECTOR_CONTENT), content); - $tip.removeClass(CLASS_NAME_FADE$3 + " " + CLASS_NAME_SHOW$5); - }; // Private - - _proto._getContent = function _getContent() { - return this.element.getAttribute("data-content") || this.config.content; - }; - - _proto._cleanTipClass = function _cleanTipClass() { - var $tip = $__default["default"](this.getTipElement()); - var tabClass = $tip.attr("class").match(BSCLS_PREFIX_REGEX$1); - - if (tabClass !== null && tabClass.length > 0) { - $tip.removeClass(tabClass.join("")); - } - }; // Static - - Popover._jQueryInterface = function _jQueryInterface(config) { - return this.each(function () { - var data = $__default["default"](this).data(DATA_KEY$7); - - var _config = typeof config === "object" ? config : null; - - if (!data && /dispose|hide/.test(config)) { - return; - } - - if (!data) { - data = new Popover(this, _config); - $__default["default"](this).data(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: "VERSION", - // Getters - get: function get() { - return VERSION$7; - }, - }, - { - key: "Default", - 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$1; - }, - }, - { - key: "EVENT_KEY", - get: function get() { - return EVENT_KEY$7; - }, - }, - { - key: "DefaultType", - get: function get() { - return DefaultType$5; - }, - }, - ]); - - return Popover; - })(Tooltip); - /** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - */ - - $__default["default"].fn[NAME$7] = Popover._jQueryInterface; - $__default["default"].fn[NAME$7].Constructor = Popover; - - $__default["default"].fn[NAME$7].noConflict = function () { - $__default["default"].fn[NAME$7] = JQUERY_NO_CONFLICT$7; - return Popover._jQueryInterface; - }; - - /** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - - var NAME$8 = "scrollspy"; - var VERSION$8 = "4.6.0"; - var DATA_KEY$8 = "bs.scrollspy"; - var EVENT_KEY$8 = "." + DATA_KEY$8; - var DATA_API_KEY$6 = ".data-api"; - var JQUERY_NO_CONFLICT$8 = $__default["default"].fn[NAME$8]; - 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$2 = "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-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_ITEMS = ".dropdown-item"; - var SELECTOR_DROPDOWN_TOGGLE = ".dropdown-toggle"; - var METHOD_OFFSET = "offset"; - var METHOD_POSITION = "position"; - /** - * ------------------------------------------------------------------------ - * Class Definition - * ------------------------------------------------------------------------ - */ - - var ScrollSpy = /*#__PURE__*/ (function () { - function ScrollSpy(element, config) { - var _this = this; - - 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_LIST_ITEMS + ",") + - (this._config.target + " " + SELECTOR_DROPDOWN_ITEMS); - this._offsets = []; - this._targets = []; - this._activeTarget = null; - this._scrollHeight = 0; - $__default["default"](this._scrollElement).on( - EVENT_SCROLL, - function (event) { - return _this._process(event); - } - ); - this.refresh(); - - this._process(); - } // 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 = [].slice.call(document.querySelectorAll(this._selector)); - targets - .map(function (element) { - var target; - var targetSelector = Util.getSelectorFromElement(element); - - if (targetSelector) { - target = document.querySelector(targetSelector); - } - - if (target) { - var targetBCR = target.getBoundingClientRect(); - - if (targetBCR.width || targetBCR.height) { - // TODO (fat): remove sketch reliance on jQuery position/offset - return [ - $__default["default"](target)[offsetMethod]().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() { - $__default["default"].removeData(this._element, DATA_KEY$8); - $__default["default"](this._scrollElement).off(EVENT_KEY$8); - 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 - - _proto._getConfig = function _getConfig(config) { - config = _extends( - {}, - Default$6, - typeof config === "object" && config ? config : {} - ); - - if (typeof config.target !== "string" && Util.isElement(config.target)) { - var id = $__default["default"](config.target).attr("id"); - - if (!id) { - id = Util.getUID(NAME$8); - $__default["default"](config.target).attr("id", id); - } - - config.target = "#" + id; - } - - Util.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-target="' + - target + - '"],' + - selector + - '[href="' + - target + - '"]' - ); - }); - - var $link = $__default["default"]( - [].slice.call(document.querySelectorAll(queries.join(","))) - ); - - if ($link.hasClass(CLASS_NAME_DROPDOWN_ITEM)) { - $link - .closest(SELECTOR_DROPDOWN) - .find(SELECTOR_DROPDOWN_TOGGLE) - .addClass(CLASS_NAME_ACTIVE$2); - $link.addClass(CLASS_NAME_ACTIVE$2); - } else { - // Set triggered link as active - $link.addClass(CLASS_NAME_ACTIVE$2); // Set triggered links parents as active - // With both